jaclang 0.6.1__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 (1331) 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 +25 -4
  5. jaclang/compiler/.gitignore +1 -0
  6. jaclang/compiler/__init__.py +1 -0
  7. jaclang/compiler/absyntree.py +7 -7
  8. jaclang/compiler/compile.py +4 -4
  9. jaclang/compiler/jac.lark +1 -0
  10. jaclang/compiler/parser.py +15 -2
  11. jaclang/compiler/passes/main/def_impl_match_pass.py +4 -0
  12. jaclang/compiler/passes/main/fuse_typeinfo_pass.py +10 -1
  13. jaclang/compiler/passes/main/import_pass.py +47 -33
  14. jaclang/compiler/passes/main/pyast_load_pass.py +33 -6
  15. jaclang/compiler/passes/main/tests/fixtures/autoimpl.impl/getme.impl.jac +3 -0
  16. jaclang/compiler/passes/main/tests/fixtures/autoimpl.impl.jac +3 -0
  17. jaclang/compiler/passes/main/tests/fixtures/autoimpl.jac +9 -0
  18. jaclang/compiler/passes/main/tests/fixtures/autoimpl.something.else.impl.jac +3 -0
  19. jaclang/compiler/passes/main/tests/fixtures/base.jac +13 -0
  20. jaclang/compiler/passes/main/tests/fixtures/base2.jac +14 -0
  21. jaclang/compiler/passes/main/tests/fixtures/blip.jac +2 -0
  22. jaclang/compiler/passes/main/tests/fixtures/codegentext.jac +31 -0
  23. jaclang/compiler/passes/main/tests/fixtures/decls.jac +10 -0
  24. jaclang/compiler/passes/main/tests/fixtures/defs_and_uses.jac +44 -0
  25. jaclang/compiler/passes/main/tests/fixtures/fstrings.jac +4 -0
  26. jaclang/compiler/passes/main/tests/fixtures/func.jac +18 -0
  27. jaclang/compiler/passes/main/tests/fixtures/func2.jac +8 -0
  28. jaclang/compiler/passes/main/tests/fixtures/game1.jac +15 -0
  29. jaclang/compiler/passes/main/tests/fixtures/impl/defs1.jac +8 -0
  30. jaclang/compiler/passes/main/tests/fixtures/impl/defs2.jac +8 -0
  31. jaclang/compiler/passes/main/tests/fixtures/impl/imps.jac +11 -0
  32. jaclang/compiler/passes/main/tests/fixtures/multi_def_err.jac +7 -0
  33. jaclang/compiler/passes/main/tests/fixtures/registry.jac +36 -0
  34. jaclang/compiler/passes/main/tests/fixtures/type_info.jac +31 -0
  35. jaclang/compiler/passes/main/tests/test_type_check_pass.py +15 -0
  36. jaclang/compiler/passes/tool/tests/fixtures/corelib.jac +480 -0
  37. jaclang/compiler/passes/tool/tests/fixtures/corelib_fmt.jac +480 -0
  38. jaclang/compiler/passes/tool/tests/fixtures/genai/essay_review.jac +36 -0
  39. jaclang/compiler/passes/tool/tests/fixtures/genai/expert_answer.jac +17 -0
  40. jaclang/compiler/passes/tool/tests/fixtures/genai/joke_gen.jac +32 -0
  41. jaclang/compiler/passes/tool/tests/fixtures/genai/odd_word_out.jac +27 -0
  42. jaclang/compiler/passes/tool/tests/fixtures/genai/personality_finder.jac +35 -0
  43. jaclang/compiler/passes/tool/tests/fixtures/genai/text_to_type.jac +25 -0
  44. jaclang/compiler/passes/tool/tests/fixtures/genai/translator.jac +13 -0
  45. jaclang/compiler/passes/tool/tests/fixtures/genai/wikipedia.jac +63 -0
  46. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.dot +39 -0
  47. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.jac +7 -0
  48. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.txt +20 -0
  49. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/ability_impl_long_comprehension.jac +15 -0
  50. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/call_with_many_parameters.jac +24 -0
  51. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/entry_main.jac +4 -0
  52. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/long_line_nested_dict_access.jac +10 -0
  53. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/multiline_fstrings.jac +16 -0
  54. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/nested_dict.jac +15 -0
  55. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/nested_loop_and_incrementer.jac +13 -0
  56. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/simple_walker.jac +25 -0
  57. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/try_block_and_walker_spawn_and_fstrings.jac +26 -0
  58. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/tuple_iteration_and_not_negation.jac +20 -0
  59. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/type_annotation.jac +3 -0
  60. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/walker_decl_only.jac +12 -0
  61. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/walker_with_default_values_types_and_docstrings.jac +18 -0
  62. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/walker_with_inline_ability_impl.jac +8 -0
  63. jaclang/compiler/passes/tool/tests/fixtures/simple_walk.jac +47 -0
  64. jaclang/compiler/passes/tool/tests/fixtures/simple_walk_fmt.jac +47 -0
  65. jaclang/compiler/passes/utils/mypy_ast_build.py +8 -0
  66. jaclang/compiler/tests/fixtures/fam.jac +67 -0
  67. jaclang/compiler/tests/fixtures/hello_world.jac +5 -0
  68. jaclang/compiler/tests/fixtures/kwesc.jac +5 -0
  69. jaclang/compiler/tests/fixtures/mod_doc_test.jac +1 -0
  70. jaclang/compiler/tests/fixtures/staticcheck.jac +20 -0
  71. jaclang/compiler/tests/fixtures/stuff.jac +6 -0
  72. jaclang/langserve/__init__.py +1 -0
  73. jaclang/langserve/server.py +108 -0
  74. jaclang/langserve/tests/__init__.py +1 -0
  75. jaclang/langserve/tests/defaults.py +226 -0
  76. jaclang/langserve/tests/fixtures/hello.jac +1 -0
  77. jaclang/langserve/tests/pylsp_jsonrpc/__init__.py +2 -0
  78. jaclang/langserve/tests/pylsp_jsonrpc/dispatchers.py +37 -0
  79. jaclang/langserve/tests/pylsp_jsonrpc/endpoint.py +294 -0
  80. jaclang/langserve/tests/pylsp_jsonrpc/exceptions.py +114 -0
  81. jaclang/langserve/tests/pylsp_jsonrpc/streams.py +113 -0
  82. jaclang/langserve/tests/session.py +255 -0
  83. jaclang/langserve/tests/test_server.py +36 -0
  84. jaclang/langserve/utils.py +53 -0
  85. jaclang/plugin/tests/fixtures/impl_match.jac +9 -0
  86. jaclang/plugin/tests/fixtures/impl_match_impl.jac +3 -0
  87. jaclang/plugin/tests/fixtures/simple_node_connection.jac +55 -0
  88. jaclang/plugin/tests/fixtures/simple_persistent.jac +41 -0
  89. jaclang/settings.py +5 -0
  90. jaclang/tests/fixtures/abc.jac +73 -0
  91. jaclang/tests/fixtures/access_checker.jac +19 -0
  92. jaclang/tests/fixtures/access_modifier.jac +49 -0
  93. jaclang/tests/fixtures/aott_raise.jac +25 -0
  94. jaclang/tests/fixtures/arithmetic_bug.jac +13 -0
  95. jaclang/tests/fixtures/assign_compr.jac +15 -0
  96. jaclang/tests/fixtures/assign_compr_dup.jac +15 -0
  97. jaclang/tests/fixtures/builtin_dotgen.jac +41 -0
  98. jaclang/tests/fixtures/chandra_bugs.jac +11 -0
  99. jaclang/tests/fixtures/chandra_bugs2.jac +26 -0
  100. jaclang/tests/fixtures/circle_pysolo.py +91 -0
  101. jaclang/tests/fixtures/deep/deeper/deep_outer_import.jac +9 -0
  102. jaclang/tests/fixtures/deep/deeper/deep_outer_import2.jac +9 -0
  103. jaclang/tests/fixtures/deep/deeper/snd_lev.jac +6 -0
  104. jaclang/tests/fixtures/deep/mycode.jac +4 -0
  105. jaclang/tests/fixtures/deep/one_lev.jac +6 -0
  106. jaclang/tests/fixtures/deep/one_lev_dup.jac +6 -0
  107. jaclang/tests/fixtures/deep/one_lev_dup_py.py +6 -0
  108. jaclang/tests/fixtures/deep_convert.jac +5 -0
  109. jaclang/tests/fixtures/deep_convo.py +6 -0
  110. jaclang/tests/fixtures/deep_import.jac +7 -0
  111. jaclang/tests/fixtures/deferred_field.jac +13 -0
  112. jaclang/tests/fixtures/disconn.jac +29 -0
  113. jaclang/tests/fixtures/edge_node_walk.jac +46 -0
  114. jaclang/tests/fixtures/edge_ops.jac +45 -0
  115. jaclang/tests/fixtures/edges_walk.jac +38 -0
  116. jaclang/tests/fixtures/enum_inside_archtype.jac +20 -0
  117. jaclang/tests/fixtures/err.jac +5 -0
  118. jaclang/tests/fixtures/err2.jac +5 -0
  119. jaclang/tests/fixtures/game1.jac +15 -0
  120. jaclang/tests/fixtures/gendot_bubble_sort.jac +77 -0
  121. jaclang/tests/fixtures/guess_game.jac +47 -0
  122. jaclang/tests/fixtures/has_goodness.jac +15 -0
  123. jaclang/tests/fixtures/hashcheck.jac +12 -0
  124. jaclang/tests/fixtures/hashcheck_dup.jac +12 -0
  125. jaclang/tests/fixtures/hello.jac +5 -0
  126. jaclang/tests/fixtures/hello_nc.jac +5 -0
  127. jaclang/tests/fixtures/ignore.jac +43 -0
  128. jaclang/tests/fixtures/ignore_dup.jac +43 -0
  129. jaclang/tests/fixtures/impl_grab.impl.jac +4 -0
  130. jaclang/tests/fixtures/impl_grab.jac +2 -0
  131. jaclang/tests/fixtures/inherit_check.jac +33 -0
  132. jaclang/tests/fixtures/jacsamp.jac +6 -0
  133. jaclang/tests/fixtures/jp_importer.jac +17 -0
  134. jaclang/tests/fixtures/lambda.jac +6 -0
  135. jaclang/tests/fixtures/maxfail_run_test.jac +5 -0
  136. jaclang/tests/fixtures/mtest.impl.jac +6 -0
  137. jaclang/tests/fixtures/mtest.jac +6 -0
  138. jaclang/tests/fixtures/needs_import.jac +18 -0
  139. jaclang/tests/fixtures/needs_import_1.jac +6 -0
  140. jaclang/tests/fixtures/needs_import_2.jac +6 -0
  141. jaclang/tests/fixtures/needs_import_3.jac +6 -0
  142. jaclang/tests/fixtures/needs_import_dup.jac +18 -0
  143. jaclang/tests/fixtures/package_import.jac +6 -0
  144. jaclang/tests/fixtures/pyfunc.py +11 -0
  145. jaclang/tests/fixtures/pyfunc_1.py +311 -0
  146. jaclang/tests/fixtures/pyfunc_2.py +279 -0
  147. jaclang/tests/fixtures/pyfunc_3.py +310 -0
  148. jaclang/tests/fixtures/random_check.jac +62 -0
  149. jaclang/tests/fixtures/raw_byte_string.jac +18 -0
  150. jaclang/tests/fixtures/registry.jac +37 -0
  151. jaclang/tests/fixtures/run_test.jac +5 -0
  152. jaclang/tests/fixtures/semstr.jac +33 -0
  153. jaclang/tests/fixtures/simple_archs.jac +26 -0
  154. jaclang/tests/fixtures/slice_vals.jac +7 -0
  155. jaclang/tests/fixtures/sub_abil_sep.jac +15 -0
  156. jaclang/tests/fixtures/sub_abil_sep_multilev.jac +17 -0
  157. jaclang/tests/fixtures/try_finally.jac +34 -0
  158. jaclang/tests/fixtures/tupleunpack.jac +6 -0
  159. jaclang/tests/fixtures/tuplytuples.jac +8 -0
  160. jaclang/tests/fixtures/type_info.jac +15 -0
  161. jaclang/tests/fixtures/with_context.jac +30 -0
  162. jaclang/tests/fixtures/with_llm_function.jac +33 -0
  163. jaclang/tests/fixtures/with_llm_lower.jac +45 -0
  164. jaclang/tests/fixtures/with_llm_method.jac +51 -0
  165. jaclang/tests/fixtures/with_llm_type.jac +52 -0
  166. jaclang/tests/test_cli.py +239 -0
  167. jaclang/tests/test_language.py +831 -0
  168. jaclang/tests/test_man_code.py +148 -0
  169. jaclang/tests/test_reference.py +95 -0
  170. jaclang/tests/test_settings.py +46 -0
  171. jaclang/utils/helpers.py +11 -0
  172. jaclang/utils/tests/test_lang_tools.py +17 -0
  173. jaclang/utils/treeprinter.py +12 -4
  174. jaclang/vendor/__init__.py +12 -1
  175. jaclang/vendor/attr/__init__.py +134 -0
  176. jaclang/vendor/attr/__init__.pyi +555 -0
  177. jaclang/vendor/attr/_cmp.py +150 -0
  178. jaclang/vendor/attr/_cmp.pyi +13 -0
  179. jaclang/vendor/attr/_compat.py +87 -0
  180. jaclang/vendor/attr/_config.py +31 -0
  181. jaclang/vendor/attr/_funcs.py +483 -0
  182. jaclang/vendor/attr/_make.py +3119 -0
  183. jaclang/vendor/attr/_next_gen.py +229 -0
  184. jaclang/vendor/attr/_typing_compat.pyi +15 -0
  185. jaclang/vendor/attr/_version_info.py +86 -0
  186. jaclang/vendor/attr/_version_info.pyi +9 -0
  187. jaclang/vendor/attr/converters.py +144 -0
  188. jaclang/vendor/attr/converters.pyi +13 -0
  189. jaclang/vendor/attr/exceptions.py +95 -0
  190. jaclang/vendor/attr/exceptions.pyi +17 -0
  191. jaclang/vendor/attr/filters.py +66 -0
  192. jaclang/vendor/attr/filters.pyi +6 -0
  193. jaclang/vendor/attr/setters.py +73 -0
  194. jaclang/vendor/attr/setters.pyi +19 -0
  195. jaclang/vendor/attr/validators.py +681 -0
  196. jaclang/vendor/attr/validators.pyi +88 -0
  197. jaclang/vendor/attrs/__init__.py +65 -0
  198. jaclang/vendor/attrs/__init__.pyi +67 -0
  199. jaclang/vendor/attrs/converters.py +3 -0
  200. jaclang/vendor/attrs/exceptions.py +3 -0
  201. jaclang/vendor/attrs/filters.py +3 -0
  202. jaclang/vendor/attrs/py.typed +0 -0
  203. jaclang/vendor/attrs/setters.py +3 -0
  204. jaclang/vendor/attrs/validators.py +3 -0
  205. jaclang/vendor/attrs-23.2.0.dist-info/METADATA +202 -0
  206. jaclang/vendor/attrs-23.2.0.dist-info/RECORD +35 -0
  207. jaclang/vendor/attrs-23.2.0.dist-info/WHEEL +4 -0
  208. jaclang/vendor/attrs-23.2.0.dist-info/licenses/LICENSE +21 -0
  209. jaclang/vendor/cattr/__init__.py +25 -0
  210. jaclang/vendor/cattr/converters.py +8 -0
  211. jaclang/vendor/cattr/disambiguators.py +3 -0
  212. jaclang/vendor/cattr/dispatch.py +3 -0
  213. jaclang/vendor/cattr/errors.py +15 -0
  214. jaclang/vendor/cattr/gen.py +21 -0
  215. jaclang/vendor/cattr/preconf/__init__.py +3 -0
  216. jaclang/vendor/cattr/preconf/bson.py +4 -0
  217. jaclang/vendor/cattr/preconf/json.py +4 -0
  218. jaclang/vendor/cattr/preconf/msgpack.py +4 -0
  219. jaclang/vendor/cattr/preconf/orjson.py +4 -0
  220. jaclang/vendor/cattr/preconf/pyyaml.py +4 -0
  221. jaclang/vendor/cattr/preconf/tomlkit.py +4 -0
  222. jaclang/vendor/cattr/preconf/ujson.py +4 -0
  223. jaclang/vendor/cattr/py.typed +0 -0
  224. jaclang/vendor/cattrs/__init__.py +55 -0
  225. jaclang/vendor/cattrs/_compat.py +465 -0
  226. jaclang/vendor/cattrs/_generics.py +22 -0
  227. jaclang/vendor/cattrs/converters.py +1101 -0
  228. jaclang/vendor/cattrs/disambiguators.py +132 -0
  229. jaclang/vendor/cattrs/dispatch.py +164 -0
  230. jaclang/vendor/cattrs/errors.py +129 -0
  231. jaclang/vendor/cattrs/fns.py +17 -0
  232. jaclang/vendor/cattrs/gen/__init__.py +890 -0
  233. jaclang/vendor/cattrs/gen/_consts.py +19 -0
  234. jaclang/vendor/cattrs/gen/_generics.py +43 -0
  235. jaclang/vendor/cattrs/gen/_lc.py +28 -0
  236. jaclang/vendor/cattrs/gen/_shared.py +51 -0
  237. jaclang/vendor/cattrs/gen/typeddicts.py +624 -0
  238. jaclang/vendor/cattrs/preconf/__init__.py +7 -0
  239. jaclang/vendor/cattrs/preconf/bson.py +107 -0
  240. jaclang/vendor/cattrs/preconf/cbor2.py +47 -0
  241. jaclang/vendor/cattrs/preconf/json.py +52 -0
  242. jaclang/vendor/cattrs/preconf/msgpack.py +51 -0
  243. jaclang/vendor/cattrs/preconf/orjson.py +82 -0
  244. jaclang/vendor/cattrs/preconf/pyyaml.py +60 -0
  245. jaclang/vendor/cattrs/preconf/tomlkit.py +85 -0
  246. jaclang/vendor/cattrs/preconf/ujson.py +52 -0
  247. jaclang/vendor/cattrs/py.typed +0 -0
  248. jaclang/vendor/cattrs/strategies/__init__.py +11 -0
  249. jaclang/vendor/cattrs/strategies/_class_methods.py +64 -0
  250. jaclang/vendor/cattrs/strategies/_subclasses.py +224 -0
  251. jaclang/vendor/cattrs/strategies/_unions.py +235 -0
  252. jaclang/vendor/cattrs/v.py +111 -0
  253. jaclang/vendor/cattrs-23.2.3.dist-info/METADATA +221 -0
  254. jaclang/vendor/cattrs-23.2.3.dist-info/RECORD +48 -0
  255. jaclang/vendor/cattrs-23.2.3.dist-info/WHEEL +4 -0
  256. jaclang/vendor/cattrs-23.2.3.dist-info/licenses/LICENSE +11 -0
  257. jaclang/vendor/lark/__init__.py +38 -38
  258. jaclang/vendor/lark/__pyinstaller/__init__.py +6 -7
  259. jaclang/vendor/lark/__pyinstaller/hook-lark.py +14 -14
  260. jaclang/vendor/lark/ast_utils.py +59 -70
  261. jaclang/vendor/lark/common.py +89 -113
  262. jaclang/vendor/lark/exceptions.py +292 -352
  263. jaclang/vendor/lark/grammar.py +130 -158
  264. jaclang/vendor/lark/grammars/common.lark +59 -59
  265. jaclang/vendor/lark/grammars/lark.lark +62 -62
  266. jaclang/vendor/lark/grammars/python.lark +302 -302
  267. jaclang/vendor/lark/grammars/unicode.lark +7 -7
  268. jaclang/vendor/lark/indenter.py +112 -118
  269. jaclang/vendor/lark/lark.py +661 -800
  270. jaclang/vendor/lark/lexer.py +678 -829
  271. jaclang/vendor/lark/load_grammar.py +1428 -1673
  272. jaclang/vendor/lark/parse_tree_builder.py +391 -466
  273. jaclang/vendor/lark/parser_frontends.py +257 -305
  274. jaclang/vendor/lark/parsers/cyk.py +340 -391
  275. jaclang/vendor/lark/parsers/earley.py +308 -385
  276. jaclang/vendor/lark/parsers/earley_common.py +42 -59
  277. jaclang/vendor/lark/parsers/earley_forest.py +810 -923
  278. jaclang/vendor/lark/parsers/grammar_analysis.py +203 -239
  279. jaclang/vendor/lark/parsers/lalr_analysis.py +332 -378
  280. jaclang/vendor/lark/parsers/lalr_interactive_parser.py +157 -171
  281. jaclang/vendor/lark/parsers/lalr_parser.py +122 -145
  282. jaclang/vendor/lark/parsers/lalr_parser_state.py +110 -141
  283. jaclang/vendor/lark/parsers/xearley.py +165 -209
  284. jaclang/vendor/lark/reconstruct.py +107 -131
  285. jaclang/vendor/lark/tools/__init__.py +71 -93
  286. jaclang/vendor/lark/tools/nearley.py +202 -240
  287. jaclang/vendor/lark/tools/serialize.py +32 -35
  288. jaclang/vendor/lark/tools/standalone.py +196 -225
  289. jaclang/vendor/lark/tree.py +272 -302
  290. jaclang/vendor/lark/tree_matcher.py +186 -194
  291. jaclang/vendor/lark/tree_templates.py +18 -26
  292. jaclang/vendor/lark/utils.py +361 -393
  293. jaclang/vendor/lark/visitors.py +593 -645
  294. jaclang/vendor/lark-1.1.9.dist-info/LICENSE +18 -0
  295. jaclang/vendor/lark-1.1.9.dist-info/METADATA +47 -0
  296. jaclang/vendor/lark-1.1.9.dist-info/RECORD +46 -0
  297. jaclang/vendor/lark-1.1.9.dist-info/WHEEL +5 -0
  298. jaclang/vendor/lark-1.1.9.dist-info/entry_points.txt +2 -0
  299. jaclang/vendor/lark-1.1.9.dist-info/top_level.txt +1 -0
  300. jaclang/vendor/lsprotocol/__init__.py +2 -0
  301. jaclang/vendor/lsprotocol/_hooks.py +1237 -0
  302. jaclang/vendor/lsprotocol/converters.py +17 -0
  303. jaclang/vendor/lsprotocol/py.typed +0 -0
  304. jaclang/vendor/lsprotocol/types.py +12898 -0
  305. jaclang/vendor/lsprotocol/validators.py +47 -0
  306. jaclang/vendor/lsprotocol-2023.0.1.dist-info/LICENSE +21 -0
  307. jaclang/vendor/lsprotocol-2023.0.1.dist-info/METADATA +65 -0
  308. jaclang/vendor/lsprotocol-2023.0.1.dist-info/RECORD +10 -0
  309. jaclang/vendor/lsprotocol-2023.0.1.dist-info/WHEEL +4 -0
  310. jaclang/vendor/mypy/api.py +1 -3
  311. jaclang/vendor/mypy/applytype.py +24 -24
  312. jaclang/vendor/mypy/argmap.py +5 -9
  313. jaclang/vendor/mypy/binder.py +11 -42
  314. jaclang/vendor/mypy/build.py +78 -260
  315. jaclang/vendor/mypy/checker.py +394 -930
  316. jaclang/vendor/mypy/checkexpr.py +210 -640
  317. jaclang/vendor/mypy/checkmember.py +44 -94
  318. jaclang/vendor/mypy/checkpattern.py +32 -104
  319. jaclang/vendor/mypy/checkstrformat.py +38 -131
  320. jaclang/vendor/mypy/config_parser.py +8 -31
  321. jaclang/vendor/mypy/constant_fold.py +1 -3
  322. jaclang/vendor/mypy/constraints.py +94 -253
  323. jaclang/vendor/mypy/copytype.py +3 -13
  324. jaclang/vendor/mypy/defaults.py +2 -4
  325. jaclang/vendor/mypy/dmypy/client.py +30 -102
  326. jaclang/vendor/mypy/dmypy_server.py +31 -118
  327. jaclang/vendor/mypy/erasetype.py +6 -18
  328. jaclang/vendor/mypy/errorcodes.py +26 -64
  329. jaclang/vendor/mypy/errors.py +23 -117
  330. jaclang/vendor/mypy/evalexpr.py +1 -3
  331. jaclang/vendor/mypy/expandtype.py +37 -40
  332. jaclang/vendor/mypy/exprtotype.py +14 -27
  333. jaclang/vendor/mypy/fastparse.py +66 -215
  334. jaclang/vendor/mypy/find_sources.py +4 -14
  335. jaclang/vendor/mypy/fixup.py +5 -10
  336. jaclang/vendor/mypy/indirection.py +1 -3
  337. jaclang/vendor/mypy/infer.py +2 -6
  338. jaclang/vendor/mypy/inspections.py +3 -13
  339. jaclang/vendor/mypy/ipc.py +7 -28
  340. jaclang/vendor/mypy/join.py +20 -39
  341. jaclang/vendor/mypy/literals.py +2 -10
  342. jaclang/vendor/mypy/main.py +39 -138
  343. jaclang/vendor/mypy/maptype.py +2 -6
  344. jaclang/vendor/mypy/meet.py +23 -77
  345. jaclang/vendor/mypy/message_registry.py +33 -88
  346. jaclang/vendor/mypy/messages.py +146 -447
  347. jaclang/vendor/mypy/metastore.py +2 -6
  348. jaclang/vendor/mypy/modulefinder.py +29 -76
  349. jaclang/vendor/mypy/moduleinspect.py +5 -17
  350. jaclang/vendor/mypy/mro.py +1 -3
  351. jaclang/vendor/mypy/nodes.py +35 -119
  352. jaclang/vendor/mypy/operators.py +2 -11
  353. jaclang/vendor/mypy/options.py +3 -9
  354. jaclang/vendor/mypy/parse.py +1 -3
  355. jaclang/vendor/mypy/plugin.py +25 -75
  356. jaclang/vendor/mypy/plugins/attrs.py +53 -119
  357. jaclang/vendor/mypy/plugins/common.py +9 -29
  358. jaclang/vendor/mypy/plugins/ctypes.py +5 -15
  359. jaclang/vendor/mypy/plugins/dataclasses.py +42 -107
  360. jaclang/vendor/mypy/plugins/default.py +26 -45
  361. jaclang/vendor/mypy/plugins/enums.py +4 -17
  362. jaclang/vendor/mypy/plugins/functools.py +2 -11
  363. jaclang/vendor/mypy/plugins/proper_plugin.py +2 -6
  364. jaclang/vendor/mypy/plugins/singledispatch.py +7 -33
  365. jaclang/vendor/mypy/reachability.py +2 -8
  366. jaclang/vendor/mypy/refinfo.py +1 -3
  367. jaclang/vendor/mypy/report.py +23 -52
  368. jaclang/vendor/mypy/semanal.py +385 -693
  369. jaclang/vendor/mypy/semanal_classprop.py +9 -34
  370. jaclang/vendor/mypy/semanal_enum.py +7 -19
  371. jaclang/vendor/mypy/semanal_infer.py +1 -3
  372. jaclang/vendor/mypy/semanal_main.py +5 -25
  373. jaclang/vendor/mypy/semanal_namedtuple.py +17 -56
  374. jaclang/vendor/mypy/semanal_newtype.py +8 -27
  375. jaclang/vendor/mypy/semanal_pass1.py +2 -6
  376. jaclang/vendor/mypy/semanal_shared.py +9 -27
  377. jaclang/vendor/mypy/semanal_typeargs.py +12 -41
  378. jaclang/vendor/mypy/semanal_typeddict.py +18 -59
  379. jaclang/vendor/mypy/server/astdiff.py +9 -34
  380. jaclang/vendor/mypy/server/astmerge.py +2 -6
  381. jaclang/vendor/mypy/server/deps.py +22 -71
  382. jaclang/vendor/mypy/server/mergecheck.py +1 -3
  383. jaclang/vendor/mypy/server/objgraph.py +2 -8
  384. jaclang/vendor/mypy/server/update.py +18 -54
  385. jaclang/vendor/mypy/solve.py +4 -17
  386. jaclang/vendor/mypy/split_namespace.py +1 -3
  387. jaclang/vendor/mypy/stats.py +6 -24
  388. jaclang/vendor/mypy/strconv.py +8 -31
  389. jaclang/vendor/mypy/stubdoc.py +8 -38
  390. jaclang/vendor/mypy/stubgen.py +79 -144
  391. jaclang/vendor/mypy/stubgenc.py +22 -69
  392. jaclang/vendor/mypy/stubtest.py +62 -167
  393. jaclang/vendor/mypy/stubutil.py +45 -61
  394. jaclang/vendor/mypy/subtypes.py +57 -133
  395. jaclang/vendor/mypy/suggestions.py +19 -53
  396. jaclang/vendor/mypy/test/data.py +13 -40
  397. jaclang/vendor/mypy/test/helpers.py +18 -43
  398. jaclang/vendor/mypy/test/meta/_pytest.py +2 -13
  399. jaclang/vendor/mypy/test/meta/test_parse_data.py +5 -9
  400. jaclang/vendor/mypy/test/meta/test_update_data.py +1 -3
  401. jaclang/vendor/mypy/test/test_find_sources.py +14 -32
  402. jaclang/vendor/mypy/test/test_ref_info.py +3 -9
  403. jaclang/vendor/mypy/test/testargs.py +1 -4
  404. jaclang/vendor/mypy/test/testcheck.py +14 -47
  405. jaclang/vendor/mypy/test/testcmdline.py +3 -14
  406. jaclang/vendor/mypy/test/testconstraints.py +8 -26
  407. jaclang/vendor/mypy/test/testdaemon.py +2 -9
  408. jaclang/vendor/mypy/test/testdeps.py +4 -12
  409. jaclang/vendor/mypy/test/testdiff.py +2 -6
  410. jaclang/vendor/mypy/test/testerrorstream.py +1 -3
  411. jaclang/vendor/mypy/test/testfinegrained.py +18 -56
  412. jaclang/vendor/mypy/test/testgraph.py +3 -18
  413. jaclang/vendor/mypy/test/testinfer.py +13 -55
  414. jaclang/vendor/mypy/test/testipc.py +3 -9
  415. jaclang/vendor/mypy/test/testmerge.py +5 -17
  416. jaclang/vendor/mypy/test/testmodulefinder.py +8 -30
  417. jaclang/vendor/mypy/test/testmypyc.py +1 -3
  418. jaclang/vendor/mypy/test/testparse.py +1 -3
  419. jaclang/vendor/mypy/test/testpep561.py +4 -13
  420. jaclang/vendor/mypy/test/testpythoneval.py +2 -6
  421. jaclang/vendor/mypy/test/testreports.py +1 -2
  422. jaclang/vendor/mypy/test/testsemanal.py +3 -10
  423. jaclang/vendor/mypy/test/testsolve.py +5 -15
  424. jaclang/vendor/mypy/test/teststubgen.py +69 -210
  425. jaclang/vendor/mypy/test/teststubtest.py +123 -163
  426. jaclang/vendor/mypy/test/testsubtypes.py +14 -34
  427. jaclang/vendor/mypy/test/testtransform.py +2 -8
  428. jaclang/vendor/mypy/test/testtypegen.py +2 -8
  429. jaclang/vendor/mypy/test/testtypes.py +77 -253
  430. jaclang/vendor/mypy/test/testutil.py +1 -3
  431. jaclang/vendor/mypy/test/typefixture.py +11 -38
  432. jaclang/vendor/mypy/test/update_data.py +4 -15
  433. jaclang/vendor/mypy/test/visitors.py +1 -9
  434. jaclang/vendor/mypy/treetransform.py +8 -25
  435. jaclang/vendor/mypy/tvar_scope.py +23 -3
  436. jaclang/vendor/mypy/type_visitor.py +3 -10
  437. jaclang/vendor/mypy/typeanal.py +183 -309
  438. jaclang/vendor/mypy/typeops.py +27 -73
  439. jaclang/vendor/mypy/types.py +77 -185
  440. jaclang/vendor/mypy/types_utils.py +7 -20
  441. jaclang/vendor/mypy/typeshed/LICENSE +237 -0
  442. jaclang/vendor/mypy/typeshed/stdlib/VERSIONS +309 -0
  443. jaclang/vendor/mypy/typeshed/stdlib/__future__.pyi +36 -0
  444. jaclang/vendor/mypy/typeshed/stdlib/__main__.pyi +3 -0
  445. jaclang/vendor/mypy/typeshed/stdlib/_ast.pyi +591 -0
  446. jaclang/vendor/mypy/typeshed/stdlib/_bisect.pyi +84 -0
  447. jaclang/vendor/mypy/typeshed/stdlib/_bootlocale.pyi +1 -0
  448. jaclang/vendor/mypy/typeshed/stdlib/_codecs.pyi +133 -0
  449. jaclang/vendor/mypy/typeshed/stdlib/_collections_abc.pyi +94 -0
  450. jaclang/vendor/mypy/typeshed/stdlib/_compat_pickle.pyi +8 -0
  451. jaclang/vendor/mypy/typeshed/stdlib/_compression.pyi +25 -0
  452. jaclang/vendor/mypy/typeshed/stdlib/_csv.pyi +90 -0
  453. jaclang/vendor/mypy/typeshed/stdlib/_ctypes.pyi +207 -0
  454. jaclang/vendor/mypy/typeshed/stdlib/_curses.pyi +566 -0
  455. jaclang/vendor/mypy/typeshed/stdlib/_decimal.pyi +281 -0
  456. jaclang/vendor/mypy/typeshed/stdlib/_dummy_thread.pyi +33 -0
  457. jaclang/vendor/mypy/typeshed/stdlib/_dummy_threading.pyi +164 -0
  458. jaclang/vendor/mypy/typeshed/stdlib/_heapq.pyi +11 -0
  459. jaclang/vendor/mypy/typeshed/stdlib/_imp.pyi +28 -0
  460. jaclang/vendor/mypy/typeshed/stdlib/_json.pyi +49 -0
  461. jaclang/vendor/mypy/typeshed/stdlib/_locale.pyi +100 -0
  462. jaclang/vendor/mypy/typeshed/stdlib/_lsprof.pyi +35 -0
  463. jaclang/vendor/mypy/typeshed/stdlib/_markupbase.pyi +16 -0
  464. jaclang/vendor/mypy/typeshed/stdlib/_msi.pyi +92 -0
  465. jaclang/vendor/mypy/typeshed/stdlib/_operator.pyi +147 -0
  466. jaclang/vendor/mypy/typeshed/stdlib/_osx_support.pyi +34 -0
  467. jaclang/vendor/mypy/typeshed/stdlib/_posixsubprocess.pyi +33 -0
  468. jaclang/vendor/mypy/typeshed/stdlib/_py_abc.pyi +14 -0
  469. jaclang/vendor/mypy/typeshed/stdlib/_pydecimal.pyi +43 -0
  470. jaclang/vendor/mypy/typeshed/stdlib/_random.pyi +12 -0
  471. jaclang/vendor/mypy/typeshed/stdlib/_sitebuiltins.pyi +16 -0
  472. jaclang/vendor/mypy/typeshed/stdlib/_socket.pyi +803 -0
  473. jaclang/vendor/mypy/typeshed/stdlib/_stat.pyi +103 -0
  474. jaclang/vendor/mypy/typeshed/stdlib/_thread.pyi +59 -0
  475. jaclang/vendor/mypy/typeshed/stdlib/_threading_local.pyi +17 -0
  476. jaclang/vendor/mypy/typeshed/stdlib/_tkinter.pyi +121 -0
  477. jaclang/vendor/mypy/typeshed/stdlib/_tracemalloc.pyi +17 -0
  478. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/__init__.pyi +347 -0
  479. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/dbapi.pyi +37 -0
  480. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/wsgi.pyi +44 -0
  481. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/xml.pyi +9 -0
  482. jaclang/vendor/mypy/typeshed/stdlib/_warnings.pyi +55 -0
  483. jaclang/vendor/mypy/typeshed/stdlib/_weakref.pyi +41 -0
  484. jaclang/vendor/mypy/typeshed/stdlib/_weakrefset.pyi +51 -0
  485. jaclang/vendor/mypy/typeshed/stdlib/_winapi.pyi +255 -0
  486. jaclang/vendor/mypy/typeshed/stdlib/abc.pyi +51 -0
  487. jaclang/vendor/mypy/typeshed/stdlib/aifc.pyi +91 -0
  488. jaclang/vendor/mypy/typeshed/stdlib/antigravity.pyi +3 -0
  489. jaclang/vendor/mypy/typeshed/stdlib/argparse.pyi +595 -0
  490. jaclang/vendor/mypy/typeshed/stdlib/array.pyi +92 -0
  491. jaclang/vendor/mypy/typeshed/stdlib/ast.pyi +277 -0
  492. jaclang/vendor/mypy/typeshed/stdlib/asynchat.pyi +21 -0
  493. jaclang/vendor/mypy/typeshed/stdlib/asyncio/__init__.pyi +41 -0
  494. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_events.pyi +440 -0
  495. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_futures.pyi +19 -0
  496. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_subprocess.pyi +63 -0
  497. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_tasks.pyi +9 -0
  498. jaclang/vendor/mypy/typeshed/stdlib/asyncio/constants.pyi +20 -0
  499. jaclang/vendor/mypy/typeshed/stdlib/asyncio/coroutines.pyi +26 -0
  500. jaclang/vendor/mypy/typeshed/stdlib/asyncio/events.pyi +580 -0
  501. jaclang/vendor/mypy/typeshed/stdlib/asyncio/exceptions.pyi +43 -0
  502. jaclang/vendor/mypy/typeshed/stdlib/asyncio/format_helpers.pyi +20 -0
  503. jaclang/vendor/mypy/typeshed/stdlib/asyncio/futures.pyi +57 -0
  504. jaclang/vendor/mypy/typeshed/stdlib/asyncio/locks.pyi +121 -0
  505. jaclang/vendor/mypy/typeshed/stdlib/asyncio/log.pyi +3 -0
  506. jaclang/vendor/mypy/typeshed/stdlib/asyncio/mixins.pyi +9 -0
  507. jaclang/vendor/mypy/typeshed/stdlib/asyncio/proactor_events.pyi +64 -0
  508. jaclang/vendor/mypy/typeshed/stdlib/asyncio/protocols.pyi +34 -0
  509. jaclang/vendor/mypy/typeshed/stdlib/asyncio/queues.pyi +47 -0
  510. jaclang/vendor/mypy/typeshed/stdlib/asyncio/runners.pyi +32 -0
  511. jaclang/vendor/mypy/typeshed/stdlib/asyncio/selector_events.pyi +8 -0
  512. jaclang/vendor/mypy/typeshed/stdlib/asyncio/sslproto.pyi +165 -0
  513. jaclang/vendor/mypy/typeshed/stdlib/asyncio/staggered.pyi +10 -0
  514. jaclang/vendor/mypy/typeshed/stdlib/asyncio/streams.pyi +153 -0
  515. jaclang/vendor/mypy/typeshed/stdlib/asyncio/subprocess.pyi +229 -0
  516. jaclang/vendor/mypy/typeshed/stdlib/asyncio/taskgroups.pyi +25 -0
  517. jaclang/vendor/mypy/typeshed/stdlib/asyncio/tasks.pyi +497 -0
  518. jaclang/vendor/mypy/typeshed/stdlib/asyncio/threads.pyi +9 -0
  519. jaclang/vendor/mypy/typeshed/stdlib/asyncio/timeouts.pyi +19 -0
  520. jaclang/vendor/mypy/typeshed/stdlib/asyncio/transports.pyi +47 -0
  521. jaclang/vendor/mypy/typeshed/stdlib/asyncio/trsock.pyi +94 -0
  522. jaclang/vendor/mypy/typeshed/stdlib/asyncio/unix_events.pyi +196 -0
  523. jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_events.pyi +85 -0
  524. jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_utils.pyi +49 -0
  525. jaclang/vendor/mypy/typeshed/stdlib/asyncore.pyi +90 -0
  526. jaclang/vendor/mypy/typeshed/stdlib/atexit.pyi +12 -0
  527. jaclang/vendor/mypy/typeshed/stdlib/audioop.pyi +43 -0
  528. jaclang/vendor/mypy/typeshed/stdlib/base64.pyi +59 -0
  529. jaclang/vendor/mypy/typeshed/stdlib/bdb.pyi +102 -0
  530. jaclang/vendor/mypy/typeshed/stdlib/binascii.pyi +36 -0
  531. jaclang/vendor/mypy/typeshed/stdlib/binhex.pyi +45 -0
  532. jaclang/vendor/mypy/typeshed/stdlib/bisect.pyi +4 -0
  533. jaclang/vendor/mypy/typeshed/stdlib/builtins.pyi +1936 -0
  534. jaclang/vendor/mypy/typeshed/stdlib/bz2.pyi +146 -0
  535. jaclang/vendor/mypy/typeshed/stdlib/cProfile.pyi +31 -0
  536. jaclang/vendor/mypy/typeshed/stdlib/calendar.pyi +208 -0
  537. jaclang/vendor/mypy/typeshed/stdlib/cgi.pyi +118 -0
  538. jaclang/vendor/mypy/typeshed/stdlib/cgitb.pyi +32 -0
  539. jaclang/vendor/mypy/typeshed/stdlib/chunk.pyi +20 -0
  540. jaclang/vendor/mypy/typeshed/stdlib/cmath.pyi +36 -0
  541. jaclang/vendor/mypy/typeshed/stdlib/cmd.pyi +45 -0
  542. jaclang/vendor/mypy/typeshed/stdlib/code.pyi +33 -0
  543. jaclang/vendor/mypy/typeshed/stdlib/codecs.pyi +285 -0
  544. jaclang/vendor/mypy/typeshed/stdlib/codeop.pyi +13 -0
  545. jaclang/vendor/mypy/typeshed/stdlib/collections/__init__.pyi +485 -0
  546. jaclang/vendor/mypy/typeshed/stdlib/collections/abc.pyi +2 -0
  547. jaclang/vendor/mypy/typeshed/stdlib/colorsys.pyi +13 -0
  548. jaclang/vendor/mypy/typeshed/stdlib/compileall.pyi +111 -0
  549. jaclang/vendor/mypy/typeshed/stdlib/concurrent/__init__.pyi +0 -0
  550. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/__init__.pyi +32 -0
  551. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/_base.pyi +126 -0
  552. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/process.pyi +233 -0
  553. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/thread.pyi +80 -0
  554. jaclang/vendor/mypy/typeshed/stdlib/configparser.pyi +313 -0
  555. jaclang/vendor/mypy/typeshed/stdlib/contextlib.pyi +208 -0
  556. jaclang/vendor/mypy/typeshed/stdlib/contextvars.pyi +63 -0
  557. jaclang/vendor/mypy/typeshed/stdlib/copy.pyi +16 -0
  558. jaclang/vendor/mypy/typeshed/stdlib/copyreg.pyi +21 -0
  559. jaclang/vendor/mypy/typeshed/stdlib/crypt.pyi +12 -0
  560. jaclang/vendor/mypy/typeshed/stdlib/csv.pyi +147 -0
  561. jaclang/vendor/mypy/typeshed/stdlib/ctypes/__init__.pyi +187 -0
  562. jaclang/vendor/mypy/typeshed/stdlib/ctypes/_endian.pyi +19 -0
  563. jaclang/vendor/mypy/typeshed/stdlib/ctypes/util.pyi +6 -0
  564. jaclang/vendor/mypy/typeshed/stdlib/ctypes/wintypes.pyi +298 -0
  565. jaclang/vendor/mypy/typeshed/stdlib/curses/__init__.pyi +22 -0
  566. jaclang/vendor/mypy/typeshed/stdlib/curses/ascii.pyi +62 -0
  567. jaclang/vendor/mypy/typeshed/stdlib/curses/has_key.pyi +1 -0
  568. jaclang/vendor/mypy/typeshed/stdlib/curses/panel.pyi +22 -0
  569. jaclang/vendor/mypy/typeshed/stdlib/curses/textpad.pyi +11 -0
  570. jaclang/vendor/mypy/typeshed/stdlib/dataclasses.pyi +315 -0
  571. jaclang/vendor/mypy/typeshed/stdlib/datetime.pyi +295 -0
  572. jaclang/vendor/mypy/typeshed/stdlib/dbm/__init__.pyi +95 -0
  573. jaclang/vendor/mypy/typeshed/stdlib/dbm/dumb.pyi +31 -0
  574. jaclang/vendor/mypy/typeshed/stdlib/dbm/gnu.pyi +41 -0
  575. jaclang/vendor/mypy/typeshed/stdlib/dbm/ndbm.pyi +37 -0
  576. jaclang/vendor/mypy/typeshed/stdlib/decimal.pyi +2 -0
  577. jaclang/vendor/mypy/typeshed/stdlib/difflib.pyi +140 -0
  578. jaclang/vendor/mypy/typeshed/stdlib/dis.pyi +144 -0
  579. jaclang/vendor/mypy/typeshed/stdlib/distutils/__init__.pyi +5 -0
  580. jaclang/vendor/mypy/typeshed/stdlib/distutils/archive_util.pyi +20 -0
  581. jaclang/vendor/mypy/typeshed/stdlib/distutils/bcppcompiler.pyi +3 -0
  582. jaclang/vendor/mypy/typeshed/stdlib/distutils/ccompiler.pyi +152 -0
  583. jaclang/vendor/mypy/typeshed/stdlib/distutils/cmd.pyi +66 -0
  584. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/__init__.pyi +0 -0
  585. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist.pyi +25 -0
  586. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_dumb.pyi +21 -0
  587. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_msi.pyi +45 -0
  588. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_packager.pyi +0 -0
  589. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_rpm.pyi +52 -0
  590. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_wininst.pyi +16 -0
  591. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build.pyi +31 -0
  592. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_clib.pyi +27 -0
  593. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_ext.pyi +50 -0
  594. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_py.pyi +44 -0
  595. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_scripts.pyi +24 -0
  596. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/check.pyi +39 -0
  597. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/clean.pyi +17 -0
  598. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/config.pyi +83 -0
  599. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install.pyi +63 -0
  600. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_data.pyi +19 -0
  601. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_egg_info.pyi +18 -0
  602. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_headers.pyi +16 -0
  603. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_lib.pyi +25 -0
  604. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_scripts.pyi +18 -0
  605. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/register.pyi +18 -0
  606. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/sdist.pyi +42 -0
  607. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/upload.pyi +17 -0
  608. jaclang/vendor/mypy/typeshed/stdlib/distutils/config.pyi +17 -0
  609. jaclang/vendor/mypy/typeshed/stdlib/distutils/core.pyi +57 -0
  610. jaclang/vendor/mypy/typeshed/stdlib/distutils/cygwinccompiler.pyi +20 -0
  611. jaclang/vendor/mypy/typeshed/stdlib/distutils/debug.pyi +1 -0
  612. jaclang/vendor/mypy/typeshed/stdlib/distutils/dep_util.pyi +3 -0
  613. jaclang/vendor/mypy/typeshed/stdlib/distutils/dir_util.pyi +13 -0
  614. jaclang/vendor/mypy/typeshed/stdlib/distutils/dist.pyi +146 -0
  615. jaclang/vendor/mypy/typeshed/stdlib/distutils/errors.pyi +19 -0
  616. jaclang/vendor/mypy/typeshed/stdlib/distutils/extension.pyi +36 -0
  617. jaclang/vendor/mypy/typeshed/stdlib/distutils/fancy_getopt.pyi +34 -0
  618. jaclang/vendor/mypy/typeshed/stdlib/distutils/file_util.pyi +14 -0
  619. jaclang/vendor/mypy/typeshed/stdlib/distutils/filelist.pyi +50 -0
  620. jaclang/vendor/mypy/typeshed/stdlib/distutils/log.pyi +25 -0
  621. jaclang/vendor/mypy/typeshed/stdlib/distutils/msvccompiler.pyi +3 -0
  622. jaclang/vendor/mypy/typeshed/stdlib/distutils/spawn.pyi +2 -0
  623. jaclang/vendor/mypy/typeshed/stdlib/distutils/sysconfig.pyi +31 -0
  624. jaclang/vendor/mypy/typeshed/stdlib/distutils/text_file.pyi +21 -0
  625. jaclang/vendor/mypy/typeshed/stdlib/distutils/unixccompiler.pyi +3 -0
  626. jaclang/vendor/mypy/typeshed/stdlib/distutils/util.pyi +46 -0
  627. jaclang/vendor/mypy/typeshed/stdlib/distutils/version.pyi +36 -0
  628. jaclang/vendor/mypy/typeshed/stdlib/doctest.pyi +248 -0
  629. jaclang/vendor/mypy/typeshed/stdlib/dummy_threading.pyi +2 -0
  630. jaclang/vendor/mypy/typeshed/stdlib/email/__init__.pyi +29 -0
  631. jaclang/vendor/mypy/typeshed/stdlib/email/_header_value_parser.pyi +392 -0
  632. jaclang/vendor/mypy/typeshed/stdlib/email/_policybase.pyi +51 -0
  633. jaclang/vendor/mypy/typeshed/stdlib/email/base64mime.pyi +13 -0
  634. jaclang/vendor/mypy/typeshed/stdlib/email/charset.pyi +34 -0
  635. jaclang/vendor/mypy/typeshed/stdlib/email/contentmanager.pyi +11 -0
  636. jaclang/vendor/mypy/typeshed/stdlib/email/encoders.pyi +8 -0
  637. jaclang/vendor/mypy/typeshed/stdlib/email/errors.pyi +39 -0
  638. jaclang/vendor/mypy/typeshed/stdlib/email/feedparser.pyi +23 -0
  639. jaclang/vendor/mypy/typeshed/stdlib/email/generator.pyi +40 -0
  640. jaclang/vendor/mypy/typeshed/stdlib/email/header.pyi +31 -0
  641. jaclang/vendor/mypy/typeshed/stdlib/email/headerregistry.pyi +178 -0
  642. jaclang/vendor/mypy/typeshed/stdlib/email/iterators.pyi +12 -0
  643. jaclang/vendor/mypy/typeshed/stdlib/email/message.pyi +165 -0
  644. jaclang/vendor/mypy/typeshed/stdlib/email/mime/__init__.pyi +0 -0
  645. jaclang/vendor/mypy/typeshed/stdlib/email/mime/application.pyi +17 -0
  646. jaclang/vendor/mypy/typeshed/stdlib/email/mime/audio.pyi +17 -0
  647. jaclang/vendor/mypy/typeshed/stdlib/email/mime/base.pyi +8 -0
  648. jaclang/vendor/mypy/typeshed/stdlib/email/mime/image.pyi +17 -0
  649. jaclang/vendor/mypy/typeshed/stdlib/email/mime/message.pyi +8 -0
  650. jaclang/vendor/mypy/typeshed/stdlib/email/mime/multipart.pyi +18 -0
  651. jaclang/vendor/mypy/typeshed/stdlib/email/mime/nonmultipart.pyi +5 -0
  652. jaclang/vendor/mypy/typeshed/stdlib/email/mime/text.pyi +9 -0
  653. jaclang/vendor/mypy/typeshed/stdlib/email/parser.pyi +26 -0
  654. jaclang/vendor/mypy/typeshed/stdlib/email/policy.pyi +38 -0
  655. jaclang/vendor/mypy/typeshed/stdlib/email/quoprimime.pyi +28 -0
  656. jaclang/vendor/mypy/typeshed/stdlib/email/utils.pyi +70 -0
  657. jaclang/vendor/mypy/typeshed/stdlib/encodings/__init__.pyi +10 -0
  658. jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8.pyi +21 -0
  659. jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8_sig.pyi +22 -0
  660. jaclang/vendor/mypy/typeshed/stdlib/ensurepip/__init__.pyi +12 -0
  661. jaclang/vendor/mypy/typeshed/stdlib/enum.pyi +320 -0
  662. jaclang/vendor/mypy/typeshed/stdlib/errno.pyi +222 -0
  663. jaclang/vendor/mypy/typeshed/stdlib/faulthandler.pyi +13 -0
  664. jaclang/vendor/mypy/typeshed/stdlib/fcntl.pyi +127 -0
  665. jaclang/vendor/mypy/typeshed/stdlib/filecmp.pyi +57 -0
  666. jaclang/vendor/mypy/typeshed/stdlib/fileinput.pyi +213 -0
  667. jaclang/vendor/mypy/typeshed/stdlib/fnmatch.pyi +9 -0
  668. jaclang/vendor/mypy/typeshed/stdlib/formatter.pyi +88 -0
  669. jaclang/vendor/mypy/typeshed/stdlib/fractions.pyi +150 -0
  670. jaclang/vendor/mypy/typeshed/stdlib/ftplib.pyi +178 -0
  671. jaclang/vendor/mypy/typeshed/stdlib/functools.pyi +213 -0
  672. jaclang/vendor/mypy/typeshed/stdlib/gc.pyi +37 -0
  673. jaclang/vendor/mypy/typeshed/stdlib/genericpath.pyi +52 -0
  674. jaclang/vendor/mypy/typeshed/stdlib/getopt.pyi +11 -0
  675. jaclang/vendor/mypy/typeshed/stdlib/getpass.pyi +8 -0
  676. jaclang/vendor/mypy/typeshed/stdlib/gettext.pyi +169 -0
  677. jaclang/vendor/mypy/typeshed/stdlib/glob.pyi +42 -0
  678. jaclang/vendor/mypy/typeshed/stdlib/graphlib.pyi +28 -0
  679. jaclang/vendor/mypy/typeshed/stdlib/grp.pyi +22 -0
  680. jaclang/vendor/mypy/typeshed/stdlib/gzip.pyi +160 -0
  681. jaclang/vendor/mypy/typeshed/stdlib/hashlib.pyi +167 -0
  682. jaclang/vendor/mypy/typeshed/stdlib/heapq.pyi +17 -0
  683. jaclang/vendor/mypy/typeshed/stdlib/hmac.pyi +38 -0
  684. jaclang/vendor/mypy/typeshed/stdlib/html/__init__.pyi +6 -0
  685. jaclang/vendor/mypy/typeshed/stdlib/html/entities.pyi +6 -0
  686. jaclang/vendor/mypy/typeshed/stdlib/html/parser.pyi +34 -0
  687. jaclang/vendor/mypy/typeshed/stdlib/http/__init__.pyi +105 -0
  688. jaclang/vendor/mypy/typeshed/stdlib/http/client.pyi +259 -0
  689. jaclang/vendor/mypy/typeshed/stdlib/http/cookiejar.pyi +159 -0
  690. jaclang/vendor/mypy/typeshed/stdlib/http/cookies.pyi +60 -0
  691. jaclang/vendor/mypy/typeshed/stdlib/http/server.pyi +83 -0
  692. jaclang/vendor/mypy/typeshed/stdlib/imaplib.pyi +168 -0
  693. jaclang/vendor/mypy/typeshed/stdlib/imghdr.pyi +17 -0
  694. jaclang/vendor/mypy/typeshed/stdlib/imp.pyi +62 -0
  695. jaclang/vendor/mypy/typeshed/stdlib/importlib/__init__.pyi +24 -0
  696. jaclang/vendor/mypy/typeshed/stdlib/importlib/_abc.pyi +15 -0
  697. jaclang/vendor/mypy/typeshed/stdlib/importlib/abc.pyi +172 -0
  698. jaclang/vendor/mypy/typeshed/stdlib/importlib/machinery.pyi +179 -0
  699. jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/__init__.pyi +285 -0
  700. jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/_meta.pyi +49 -0
  701. jaclang/vendor/mypy/typeshed/stdlib/importlib/readers.pyi +68 -0
  702. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/__init__.pyi +46 -0
  703. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/abc.pyi +12 -0
  704. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/readers.pyi +14 -0
  705. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/simple.pyi +56 -0
  706. jaclang/vendor/mypy/typeshed/stdlib/importlib/simple.pyi +11 -0
  707. jaclang/vendor/mypy/typeshed/stdlib/importlib/util.pyi +43 -0
  708. jaclang/vendor/mypy/typeshed/stdlib/inspect.pyi +632 -0
  709. jaclang/vendor/mypy/typeshed/stdlib/io.pyi +238 -0
  710. jaclang/vendor/mypy/typeshed/stdlib/ipaddress.pyi +208 -0
  711. jaclang/vendor/mypy/typeshed/stdlib/itertools.pyi +273 -0
  712. jaclang/vendor/mypy/typeshed/stdlib/json/__init__.pyi +61 -0
  713. jaclang/vendor/mypy/typeshed/stdlib/json/decoder.pyi +32 -0
  714. jaclang/vendor/mypy/typeshed/stdlib/json/encoder.pyi +40 -0
  715. jaclang/vendor/mypy/typeshed/stdlib/json/tool.pyi +1 -0
  716. jaclang/vendor/mypy/typeshed/stdlib/keyword.pyi +21 -0
  717. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/__init__.pyi +0 -0
  718. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/btm_matcher.pyi +28 -0
  719. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixer_base.pyi +42 -0
  720. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/__init__.pyi +0 -0
  721. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_apply.pyi +8 -0
  722. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_asserts.pyi +10 -0
  723. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_basestring.pyi +8 -0
  724. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_buffer.pyi +8 -0
  725. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_dict.pyi +16 -0
  726. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_except.pyi +14 -0
  727. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exec.pyi +8 -0
  728. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_execfile.pyi +8 -0
  729. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exitfunc.pyi +13 -0
  730. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_filter.pyi +9 -0
  731. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_funcattrs.pyi +8 -0
  732. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_future.pyi +8 -0
  733. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_getcwdu.pyi +8 -0
  734. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_has_key.pyi +8 -0
  735. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_idioms.pyi +15 -0
  736. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_import.pyi +16 -0
  737. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports.pyi +21 -0
  738. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports2.pyi +6 -0
  739. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_input.pyi +11 -0
  740. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_intern.pyi +9 -0
  741. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_isinstance.pyi +8 -0
  742. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools.pyi +9 -0
  743. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools_imports.pyi +7 -0
  744. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_long.pyi +7 -0
  745. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_map.pyi +9 -0
  746. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_metaclass.pyi +17 -0
  747. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_methodattrs.pyi +10 -0
  748. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ne.pyi +8 -0
  749. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_next.pyi +19 -0
  750. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_nonzero.pyi +8 -0
  751. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_numliterals.pyi +8 -0
  752. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_operator.pyi +12 -0
  753. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_paren.pyi +8 -0
  754. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_print.pyi +12 -0
  755. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raise.pyi +8 -0
  756. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raw_input.pyi +8 -0
  757. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reduce.pyi +8 -0
  758. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reload.pyi +9 -0
  759. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_renames.pyi +17 -0
  760. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_repr.pyi +8 -0
  761. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_set_literal.pyi +7 -0
  762. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_standarderror.pyi +8 -0
  763. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_sys_exc.pyi +9 -0
  764. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_throw.pyi +8 -0
  765. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_tuple_params.pyi +17 -0
  766. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_types.pyi +8 -0
  767. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_unicode.pyi +12 -0
  768. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_urllib.pyi +15 -0
  769. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ws_comma.pyi +12 -0
  770. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xrange.pyi +20 -0
  771. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xreadlines.pyi +8 -0
  772. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_zip.pyi +9 -0
  773. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/main.pyi +42 -0
  774. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/__init__.pyi +9 -0
  775. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/driver.pyi +27 -0
  776. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/grammar.pyi +24 -0
  777. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/literals.pyi +7 -0
  778. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/parse.pyi +30 -0
  779. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/pgen.pyi +50 -0
  780. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/token.pyi +67 -0
  781. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/tokenize.pyi +96 -0
  782. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pygram.pyi +114 -0
  783. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pytree.pyi +117 -0
  784. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/refactor.pyi +82 -0
  785. jaclang/vendor/mypy/typeshed/stdlib/linecache.pyi +23 -0
  786. jaclang/vendor/mypy/typeshed/stdlib/locale.pyi +152 -0
  787. jaclang/vendor/mypy/typeshed/stdlib/logging/__init__.pyi +658 -0
  788. jaclang/vendor/mypy/typeshed/stdlib/logging/config.pyi +134 -0
  789. jaclang/vendor/mypy/typeshed/stdlib/logging/handlers.pyi +275 -0
  790. jaclang/vendor/mypy/typeshed/stdlib/lzma.pyi +197 -0
  791. jaclang/vendor/mypy/typeshed/stdlib/mailbox.pyi +256 -0
  792. jaclang/vendor/mypy/typeshed/stdlib/mailcap.pyi +11 -0
  793. jaclang/vendor/mypy/typeshed/stdlib/marshal.pyi +33 -0
  794. jaclang/vendor/mypy/typeshed/stdlib/math.pyi +125 -0
  795. jaclang/vendor/mypy/typeshed/stdlib/mimetypes.pyi +46 -0
  796. jaclang/vendor/mypy/typeshed/stdlib/mmap.pyi +113 -0
  797. jaclang/vendor/mypy/typeshed/stdlib/modulefinder.pyi +66 -0
  798. jaclang/vendor/mypy/typeshed/stdlib/msilib/__init__.pyi +177 -0
  799. jaclang/vendor/mypy/typeshed/stdlib/msilib/schema.pyi +94 -0
  800. jaclang/vendor/mypy/typeshed/stdlib/msilib/sequence.pyi +13 -0
  801. jaclang/vendor/mypy/typeshed/stdlib/msilib/text.pyi +7 -0
  802. jaclang/vendor/mypy/typeshed/stdlib/msvcrt.pyi +32 -0
  803. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/__init__.pyi +90 -0
  804. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/connection.pyi +75 -0
  805. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/context.pyi +189 -0
  806. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/__init__.pyi +77 -0
  807. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/connection.pyi +39 -0
  808. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/forkserver.pyi +31 -0
  809. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/heap.pyi +36 -0
  810. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/managers.pyi +212 -0
  811. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/pool.pyi +103 -0
  812. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_fork.pyi +23 -0
  813. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_forkserver.pyi +16 -0
  814. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_posix.pyi +20 -0
  815. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_win32.pyi +30 -0
  816. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/process.pyi +39 -0
  817. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/queues.pyi +41 -0
  818. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/reduction.pyi +90 -0
  819. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_sharer.pyi +20 -0
  820. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_tracker.pyi +18 -0
  821. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/shared_memory.pyi +40 -0
  822. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/sharedctypes.pyi +107 -0
  823. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/spawn.pyi +32 -0
  824. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/synchronize.pyi +54 -0
  825. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/util.pyi +98 -0
  826. jaclang/vendor/mypy/typeshed/stdlib/netrc.pyi +23 -0
  827. jaclang/vendor/mypy/typeshed/stdlib/nis.pyi +9 -0
  828. jaclang/vendor/mypy/typeshed/stdlib/nntplib.pyi +125 -0
  829. jaclang/vendor/mypy/typeshed/stdlib/nt.pyi +111 -0
  830. jaclang/vendor/mypy/typeshed/stdlib/ntpath.pyi +119 -0
  831. jaclang/vendor/mypy/typeshed/stdlib/nturl2path.pyi +2 -0
  832. jaclang/vendor/mypy/typeshed/stdlib/numbers.pyi +209 -0
  833. jaclang/vendor/mypy/typeshed/stdlib/opcode.pyi +59 -0
  834. jaclang/vendor/mypy/typeshed/stdlib/operator.pyi +110 -0
  835. jaclang/vendor/mypy/typeshed/stdlib/optparse.pyi +255 -0
  836. jaclang/vendor/mypy/typeshed/stdlib/os/__init__.pyi +1157 -0
  837. jaclang/vendor/mypy/typeshed/stdlib/os/path.pyi +8 -0
  838. jaclang/vendor/mypy/typeshed/stdlib/ossaudiodev.pyi +131 -0
  839. jaclang/vendor/mypy/typeshed/stdlib/parser.pyi +24 -0
  840. jaclang/vendor/mypy/typeshed/stdlib/pathlib.pyi +232 -0
  841. jaclang/vendor/mypy/typeshed/stdlib/pdb.pyi +181 -0
  842. jaclang/vendor/mypy/typeshed/stdlib/pickle.pyi +271 -0
  843. jaclang/vendor/mypy/typeshed/stdlib/pickletools.pyi +167 -0
  844. jaclang/vendor/mypy/typeshed/stdlib/pipes.pyi +16 -0
  845. jaclang/vendor/mypy/typeshed/stdlib/pkgutil.pyi +53 -0
  846. jaclang/vendor/mypy/typeshed/stdlib/platform.pyi +42 -0
  847. jaclang/vendor/mypy/typeshed/stdlib/plistlib.pyi +113 -0
  848. jaclang/vendor/mypy/typeshed/stdlib/poplib.pyi +71 -0
  849. jaclang/vendor/mypy/typeshed/stdlib/posix.pyi +361 -0
  850. jaclang/vendor/mypy/typeshed/stdlib/posixpath.pyi +161 -0
  851. jaclang/vendor/mypy/typeshed/stdlib/pprint.pyi +112 -0
  852. jaclang/vendor/mypy/typeshed/stdlib/profile.pyi +31 -0
  853. jaclang/vendor/mypy/typeshed/stdlib/pstats.pyi +80 -0
  854. jaclang/vendor/mypy/typeshed/stdlib/pty.pyi +19 -0
  855. jaclang/vendor/mypy/typeshed/stdlib/pwd.pyi +28 -0
  856. jaclang/vendor/mypy/typeshed/stdlib/py_compile.pyi +34 -0
  857. jaclang/vendor/mypy/typeshed/stdlib/pyclbr.pyi +74 -0
  858. jaclang/vendor/mypy/typeshed/stdlib/pydoc.pyi +261 -0
  859. jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/__init__.pyi +0 -0
  860. jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/topics.pyi +1 -0
  861. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/__init__.pyi +85 -0
  862. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/errors.pyi +49 -0
  863. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/model.pyi +11 -0
  864. jaclang/vendor/mypy/typeshed/stdlib/queue.pyi +66 -0
  865. jaclang/vendor/mypy/typeshed/stdlib/quopri.pyi +11 -0
  866. jaclang/vendor/mypy/typeshed/stdlib/random.pyi +138 -0
  867. jaclang/vendor/mypy/typeshed/stdlib/re.pyi +290 -0
  868. jaclang/vendor/mypy/typeshed/stdlib/readline.pyi +36 -0
  869. jaclang/vendor/mypy/typeshed/stdlib/reprlib.pyi +65 -0
  870. jaclang/vendor/mypy/typeshed/stdlib/resource.pyi +94 -0
  871. jaclang/vendor/mypy/typeshed/stdlib/rlcompleter.pyi +9 -0
  872. jaclang/vendor/mypy/typeshed/stdlib/runpy.pyi +24 -0
  873. jaclang/vendor/mypy/typeshed/stdlib/sched.pyi +42 -0
  874. jaclang/vendor/mypy/typeshed/stdlib/secrets.pyi +15 -0
  875. jaclang/vendor/mypy/typeshed/stdlib/select.pyi +155 -0
  876. jaclang/vendor/mypy/typeshed/stdlib/selectors.pyi +67 -0
  877. jaclang/vendor/mypy/typeshed/stdlib/shelve.pyi +46 -0
  878. jaclang/vendor/mypy/typeshed/stdlib/shlex.pyi +63 -0
  879. jaclang/vendor/mypy/typeshed/stdlib/shutil.pyi +185 -0
  880. jaclang/vendor/mypy/typeshed/stdlib/signal.pyi +188 -0
  881. jaclang/vendor/mypy/typeshed/stdlib/site.pyi +27 -0
  882. jaclang/vendor/mypy/typeshed/stdlib/smtpd.pyi +91 -0
  883. jaclang/vendor/mypy/typeshed/stdlib/smtplib.pyi +204 -0
  884. jaclang/vendor/mypy/typeshed/stdlib/sndhdr.pyi +14 -0
  885. jaclang/vendor/mypy/typeshed/stdlib/socket.pyi +825 -0
  886. jaclang/vendor/mypy/typeshed/stdlib/socketserver.pyi +168 -0
  887. jaclang/vendor/mypy/typeshed/stdlib/spwd.pyi +41 -0
  888. jaclang/vendor/mypy/typeshed/stdlib/sqlite3/__init__.pyi +1 -0
  889. jaclang/vendor/mypy/typeshed/stdlib/sqlite3/dbapi2.pyi +551 -0
  890. jaclang/vendor/mypy/typeshed/stdlib/sre_compile.pyi +11 -0
  891. jaclang/vendor/mypy/typeshed/stdlib/sre_constants.pyi +130 -0
  892. jaclang/vendor/mypy/typeshed/stdlib/sre_parse.pyi +104 -0
  893. jaclang/vendor/mypy/typeshed/stdlib/ssl.pyi +537 -0
  894. jaclang/vendor/mypy/typeshed/stdlib/stat.pyi +1 -0
  895. jaclang/vendor/mypy/typeshed/stdlib/statistics.pyi +132 -0
  896. jaclang/vendor/mypy/typeshed/stdlib/string.pyi +83 -0
  897. jaclang/vendor/mypy/typeshed/stdlib/stringprep.pyi +27 -0
  898. jaclang/vendor/mypy/typeshed/stdlib/struct.pyi +26 -0
  899. jaclang/vendor/mypy/typeshed/stdlib/subprocess.pyi +2615 -0
  900. jaclang/vendor/mypy/typeshed/stdlib/sunau.pyi +86 -0
  901. jaclang/vendor/mypy/typeshed/stdlib/symbol.pyi +93 -0
  902. jaclang/vendor/mypy/typeshed/stdlib/symtable.pyi +58 -0
  903. jaclang/vendor/mypy/typeshed/stdlib/sys/__init__.pyi +373 -0
  904. jaclang/vendor/mypy/typeshed/stdlib/sys/_monitoring.pyi +52 -0
  905. jaclang/vendor/mypy/typeshed/stdlib/sysconfig.pyi +48 -0
  906. jaclang/vendor/mypy/typeshed/stdlib/syslog.pyi +46 -0
  907. jaclang/vendor/mypy/typeshed/stdlib/tabnanny.pyi +16 -0
  908. jaclang/vendor/mypy/typeshed/stdlib/tarfile.pyi +441 -0
  909. jaclang/vendor/mypy/typeshed/stdlib/telnetlib.pyi +122 -0
  910. jaclang/vendor/mypy/typeshed/stdlib/tempfile.pyi +477 -0
  911. jaclang/vendor/mypy/typeshed/stdlib/termios.pyi +267 -0
  912. jaclang/vendor/mypy/typeshed/stdlib/textwrap.pyi +103 -0
  913. jaclang/vendor/mypy/typeshed/stdlib/this.pyi +2 -0
  914. jaclang/vendor/mypy/typeshed/stdlib/threading.pyi +187 -0
  915. jaclang/vendor/mypy/typeshed/stdlib/time.pyi +108 -0
  916. jaclang/vendor/mypy/typeshed/stdlib/timeit.pyi +32 -0
  917. jaclang/vendor/mypy/typeshed/stdlib/tkinter/__init__.pyi +3654 -0
  918. jaclang/vendor/mypy/typeshed/stdlib/tkinter/colorchooser.pyi +20 -0
  919. jaclang/vendor/mypy/typeshed/stdlib/tkinter/commondialog.pyi +14 -0
  920. jaclang/vendor/mypy/typeshed/stdlib/tkinter/constants.pyi +80 -0
  921. jaclang/vendor/mypy/typeshed/stdlib/tkinter/dialog.pyi +16 -0
  922. jaclang/vendor/mypy/typeshed/stdlib/tkinter/dnd.pyi +20 -0
  923. jaclang/vendor/mypy/typeshed/stdlib/tkinter/filedialog.pyi +151 -0
  924. jaclang/vendor/mypy/typeshed/stdlib/tkinter/font.pyi +116 -0
  925. jaclang/vendor/mypy/typeshed/stdlib/tkinter/messagebox.pyi +44 -0
  926. jaclang/vendor/mypy/typeshed/stdlib/tkinter/scrolledtext.pyi +9 -0
  927. jaclang/vendor/mypy/typeshed/stdlib/tkinter/simpledialog.pyi +54 -0
  928. jaclang/vendor/mypy/typeshed/stdlib/tkinter/tix.pyi +299 -0
  929. jaclang/vendor/mypy/typeshed/stdlib/tkinter/ttk.pyi +1204 -0
  930. jaclang/vendor/mypy/typeshed/stdlib/token.pyi +159 -0
  931. jaclang/vendor/mypy/typeshed/stdlib/tokenize.pyi +177 -0
  932. jaclang/vendor/mypy/typeshed/stdlib/tomllib.pyi +10 -0
  933. jaclang/vendor/mypy/typeshed/stdlib/trace.pyi +79 -0
  934. jaclang/vendor/mypy/typeshed/stdlib/traceback.pyi +262 -0
  935. jaclang/vendor/mypy/typeshed/stdlib/tracemalloc.pyi +124 -0
  936. jaclang/vendor/mypy/typeshed/stdlib/tty.pyi +30 -0
  937. jaclang/vendor/mypy/typeshed/stdlib/turtle.pyi +713 -0
  938. jaclang/vendor/mypy/typeshed/stdlib/types.pyi +614 -0
  939. jaclang/vendor/mypy/typeshed/stdlib/typing.pyi +976 -0
  940. jaclang/vendor/mypy/typeshed/stdlib/typing_extensions.pyi +509 -0
  941. jaclang/vendor/mypy/typeshed/stdlib/unicodedata.pyi +73 -0
  942. jaclang/vendor/mypy/typeshed/stdlib/unittest/__init__.pyi +67 -0
  943. jaclang/vendor/mypy/typeshed/stdlib/unittest/_log.pyi +27 -0
  944. jaclang/vendor/mypy/typeshed/stdlib/unittest/async_case.pyi +21 -0
  945. jaclang/vendor/mypy/typeshed/stdlib/unittest/case.pyi +342 -0
  946. jaclang/vendor/mypy/typeshed/stdlib/unittest/loader.pyi +51 -0
  947. jaclang/vendor/mypy/typeshed/stdlib/unittest/main.pyi +69 -0
  948. jaclang/vendor/mypy/typeshed/stdlib/unittest/mock.pyi +430 -0
  949. jaclang/vendor/mypy/typeshed/stdlib/unittest/result.pyi +47 -0
  950. jaclang/vendor/mypy/typeshed/stdlib/unittest/runner.pyi +72 -0
  951. jaclang/vendor/mypy/typeshed/stdlib/unittest/signals.pyi +15 -0
  952. jaclang/vendor/mypy/typeshed/stdlib/unittest/suite.pyi +22 -0
  953. jaclang/vendor/mypy/typeshed/stdlib/unittest/util.pyi +23 -0
  954. jaclang/vendor/mypy/typeshed/stdlib/urllib/__init__.pyi +0 -0
  955. jaclang/vendor/mypy/typeshed/stdlib/urllib/error.pyi +23 -0
  956. jaclang/vendor/mypy/typeshed/stdlib/urllib/parse.pyi +210 -0
  957. jaclang/vendor/mypy/typeshed/stdlib/urllib/request.pyi +400 -0
  958. jaclang/vendor/mypy/typeshed/stdlib/urllib/response.pyi +43 -0
  959. jaclang/vendor/mypy/typeshed/stdlib/urllib/robotparser.pyi +20 -0
  960. jaclang/vendor/mypy/typeshed/stdlib/uu.pyi +13 -0
  961. jaclang/vendor/mypy/typeshed/stdlib/uuid.pyi +100 -0
  962. jaclang/vendor/mypy/typeshed/stdlib/warnings.pyi +112 -0
  963. jaclang/vendor/mypy/typeshed/stdlib/wave.pyi +85 -0
  964. jaclang/vendor/mypy/typeshed/stdlib/weakref.pyi +149 -0
  965. jaclang/vendor/mypy/typeshed/stdlib/webbrowser.pyi +74 -0
  966. jaclang/vendor/mypy/typeshed/stdlib/winreg.pyi +132 -0
  967. jaclang/vendor/mypy/typeshed/stdlib/winsound.pyi +28 -0
  968. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/__init__.pyi +0 -0
  969. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/handlers.pyi +91 -0
  970. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/headers.pyi +26 -0
  971. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/simple_server.pyi +37 -0
  972. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/types.pyi +32 -0
  973. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/util.pyi +24 -0
  974. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/validate.pyi +50 -0
  975. jaclang/vendor/mypy/typeshed/stdlib/xdrlib.pyi +57 -0
  976. jaclang/vendor/mypy/typeshed/stdlib/xml/__init__.pyi +1 -0
  977. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/NodeFilter.pyi +19 -0
  978. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/__init__.pyi +69 -0
  979. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/domreg.pyi +8 -0
  980. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/expatbuilder.pyi +100 -0
  981. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minicompat.pyi +22 -0
  982. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minidom.pyi +404 -0
  983. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/pulldom.pyi +94 -0
  984. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/xmlbuilder.pyi +108 -0
  985. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementInclude.pyi +28 -0
  986. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementPath.pyi +34 -0
  987. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementTree.pyi +327 -0
  988. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/__init__.pyi +0 -0
  989. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/cElementTree.pyi +1 -0
  990. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/__init__.pyi +1 -0
  991. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/__init__.pyi +1 -0
  992. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/errors.pyi +1 -0
  993. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/model.pyi +1 -0
  994. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/__init__.pyi +25 -0
  995. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/_exceptions.pyi +19 -0
  996. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/handler.pyi +55 -0
  997. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/saxutils.pyi +60 -0
  998. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/xmlreader.pyi +87 -0
  999. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/__init__.pyi +0 -0
  1000. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/client.pyi +296 -0
  1001. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/server.pyi +143 -0
  1002. jaclang/vendor/mypy/typeshed/stdlib/xxlimited.pyi +22 -0
  1003. jaclang/vendor/mypy/typeshed/stdlib/zipapp.pyi +20 -0
  1004. jaclang/vendor/mypy/typeshed/stdlib/zipfile/__init__.pyi +306 -0
  1005. jaclang/vendor/mypy/typeshed/stdlib/zipfile/_path.pyi +95 -0
  1006. jaclang/vendor/mypy/typeshed/stdlib/zipimport.pyi +32 -0
  1007. jaclang/vendor/mypy/typeshed/stdlib/zlib.pyi +56 -0
  1008. jaclang/vendor/mypy/typeshed/stdlib/zoneinfo/__init__.pyi +38 -0
  1009. jaclang/vendor/mypy/typeshed/stubs/mypy-extensions/mypy_extensions.pyi +218 -0
  1010. jaclang/vendor/mypy/typestate.py +5 -15
  1011. jaclang/vendor/mypy/typetraverser.py +9 -3
  1012. jaclang/vendor/mypy/typevars.py +2 -8
  1013. jaclang/vendor/mypy/util.py +14 -45
  1014. jaclang/vendor/mypy/version.py +1 -19
  1015. jaclang/vendor/mypy/visitor.py +3 -9
  1016. jaclang/vendor/mypy/xml/mypy-html.css +104 -0
  1017. jaclang/vendor/mypy/xml/mypy-html.xslt +81 -0
  1018. jaclang/vendor/mypy/xml/mypy-txt.xslt +100 -0
  1019. jaclang/vendor/mypy/xml/mypy.xsd +50 -0
  1020. jaclang/vendor/mypy-1.10.0.dist-info/LICENSE +229 -0
  1021. jaclang/vendor/mypy-1.10.0.dist-info/METADATA +48 -0
  1022. jaclang/vendor/mypy-1.10.0.dist-info/RECORD +1241 -0
  1023. jaclang/vendor/mypy-1.10.0.dist-info/WHEEL +6 -0
  1024. jaclang/vendor/mypy-1.10.0.dist-info/entry_points.txt +6 -0
  1025. jaclang/vendor/mypy-1.10.0.dist-info/top_level.txt +3 -0
  1026. jaclang/vendor/mypy_extensions-1.0.0.dist-info/LICENSE +27 -0
  1027. jaclang/vendor/mypy_extensions-1.0.0.dist-info/METADATA +29 -0
  1028. jaclang/vendor/mypy_extensions-1.0.0.dist-info/RECORD +6 -0
  1029. jaclang/vendor/mypy_extensions-1.0.0.dist-info/WHEEL +5 -0
  1030. jaclang/vendor/mypy_extensions-1.0.0.dist-info/top_level.txt +1 -0
  1031. jaclang/vendor/mypy_extensions.py +21 -40
  1032. jaclang/vendor/mypyc/README.md +133 -0
  1033. jaclang/vendor/mypyc/__main__.py +1 -3
  1034. jaclang/vendor/mypyc/analysis/attrdefined.py +6 -22
  1035. jaclang/vendor/mypyc/analysis/dataflow.py +5 -3
  1036. jaclang/vendor/mypyc/analysis/ircheck.py +13 -26
  1037. jaclang/vendor/mypyc/analysis/selfleaks.py +4 -0
  1038. jaclang/vendor/mypyc/build.py +6 -19
  1039. jaclang/vendor/mypyc/codegen/emit.py +20 -73
  1040. jaclang/vendor/mypyc/codegen/emitclass.py +22 -72
  1041. jaclang/vendor/mypyc/codegen/emitfunc.py +20 -62
  1042. jaclang/vendor/mypyc/codegen/emitmodule.py +50 -117
  1043. jaclang/vendor/mypyc/codegen/emitwrapper.py +22 -78
  1044. jaclang/vendor/mypyc/codegen/literals.py +1 -3
  1045. jaclang/vendor/mypyc/common.py +1 -3
  1046. jaclang/vendor/mypyc/doc/Makefile +20 -0
  1047. jaclang/vendor/mypyc/doc/bool_operations.rst +27 -0
  1048. jaclang/vendor/mypyc/doc/compilation_units.rst +20 -0
  1049. jaclang/vendor/mypyc/doc/conf.py +59 -0
  1050. jaclang/vendor/mypyc/doc/cpython-timings.md +25 -0
  1051. jaclang/vendor/mypyc/doc/dev-intro.md +548 -0
  1052. jaclang/vendor/mypyc/doc/dict_operations.rst +59 -0
  1053. jaclang/vendor/mypyc/doc/differences_from_python.rst +332 -0
  1054. jaclang/vendor/mypyc/doc/float_operations.rst +50 -0
  1055. jaclang/vendor/mypyc/doc/future.md +42 -0
  1056. jaclang/vendor/mypyc/doc/getting_started.rst +240 -0
  1057. jaclang/vendor/mypyc/doc/index.rst +61 -0
  1058. jaclang/vendor/mypyc/doc/int_operations.rst +162 -0
  1059. jaclang/vendor/mypyc/doc/introduction.rst +150 -0
  1060. jaclang/vendor/mypyc/doc/list_operations.rst +65 -0
  1061. jaclang/vendor/mypyc/doc/make.bat +35 -0
  1062. jaclang/vendor/mypyc/doc/native_classes.rst +206 -0
  1063. jaclang/vendor/mypyc/doc/native_operations.rst +55 -0
  1064. jaclang/vendor/mypyc/doc/performance_tips_and_tricks.rst +244 -0
  1065. jaclang/vendor/mypyc/doc/set_operations.rst +47 -0
  1066. jaclang/vendor/mypyc/doc/str_operations.rst +35 -0
  1067. jaclang/vendor/mypyc/doc/tuple_operations.rst +33 -0
  1068. jaclang/vendor/mypyc/doc/using_type_annotations.rst +398 -0
  1069. jaclang/vendor/mypyc/external/googletest/LICENSE +28 -0
  1070. jaclang/vendor/mypyc/external/googletest/README.md +280 -0
  1071. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-death-test.h +294 -0
  1072. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-message.h +250 -0
  1073. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h +1444 -0
  1074. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h.pump +510 -0
  1075. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-printers.h +993 -0
  1076. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-spi.h +232 -0
  1077. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-test-part.h +179 -0
  1078. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-typed-test.h +263 -0
  1079. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest.h +2236 -0
  1080. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_pred_impl.h +358 -0
  1081. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_prod.h +58 -0
  1082. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-port.h +69 -0
  1083. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-printers.h +42 -0
  1084. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest.h +41 -0
  1085. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-death-test-internal.h +319 -0
  1086. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-filepath.h +206 -0
  1087. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-internal.h +1238 -0
  1088. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-linked_ptr.h +243 -0
  1089. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h +5146 -0
  1090. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +286 -0
  1091. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util.h +731 -0
  1092. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port-arch.h +93 -0
  1093. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port.h +2560 -0
  1094. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-string.h +167 -0
  1095. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h +1020 -0
  1096. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h.pump +347 -0
  1097. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h +3331 -0
  1098. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h.pump +297 -0
  1099. jaclang/vendor/mypyc/external/googletest/make/Makefile +61 -0
  1100. jaclang/vendor/mypyc/external/googletest/src/gtest-all.cc +48 -0
  1101. jaclang/vendor/mypyc/external/googletest/src/gtest-death-test.cc +1342 -0
  1102. jaclang/vendor/mypyc/external/googletest/src/gtest-filepath.cc +387 -0
  1103. jaclang/vendor/mypyc/external/googletest/src/gtest-internal-inl.h +1183 -0
  1104. jaclang/vendor/mypyc/external/googletest/src/gtest-port.cc +1259 -0
  1105. jaclang/vendor/mypyc/external/googletest/src/gtest-printers.cc +373 -0
  1106. jaclang/vendor/mypyc/external/googletest/src/gtest-test-part.cc +110 -0
  1107. jaclang/vendor/mypyc/external/googletest/src/gtest-typed-test.cc +118 -0
  1108. jaclang/vendor/mypyc/external/googletest/src/gtest.cc +5388 -0
  1109. jaclang/vendor/mypyc/external/googletest/src/gtest_main.cc +38 -0
  1110. jaclang/vendor/mypyc/ir/class_ir.py +8 -24
  1111. jaclang/vendor/mypyc/ir/func_ir.py +3 -16
  1112. jaclang/vendor/mypyc/ir/module_ir.py +2 -6
  1113. jaclang/vendor/mypyc/ir/ops.py +103 -66
  1114. jaclang/vendor/mypyc/ir/pprint.py +35 -55
  1115. jaclang/vendor/mypyc/ir/rtypes.py +16 -48
  1116. jaclang/vendor/mypyc/irbuild/ast_helpers.py +4 -1
  1117. jaclang/vendor/mypyc/irbuild/builder.py +46 -148
  1118. jaclang/vendor/mypyc/irbuild/callable_class.py +5 -19
  1119. jaclang/vendor/mypyc/irbuild/classdef.py +27 -83
  1120. jaclang/vendor/mypyc/irbuild/env_class.py +3 -9
  1121. jaclang/vendor/mypyc/irbuild/expression.py +42 -100
  1122. jaclang/vendor/mypyc/irbuild/for_helpers.py +56 -105
  1123. jaclang/vendor/mypyc/irbuild/format_str_tokenizer.py +1 -4
  1124. jaclang/vendor/mypyc/irbuild/function.py +40 -132
  1125. jaclang/vendor/mypyc/irbuild/generator.py +14 -49
  1126. jaclang/vendor/mypyc/irbuild/ll_builder.py +197 -426
  1127. jaclang/vendor/mypyc/irbuild/mapper.py +2 -13
  1128. jaclang/vendor/mypyc/irbuild/match.py +11 -36
  1129. jaclang/vendor/mypyc/irbuild/nonlocalcontrol.py +2 -7
  1130. jaclang/vendor/mypyc/irbuild/prebuildvisitor.py +1 -4
  1131. jaclang/vendor/mypyc/irbuild/prepare.py +25 -83
  1132. jaclang/vendor/mypyc/irbuild/specialize.py +22 -72
  1133. jaclang/vendor/mypyc/irbuild/statement.py +30 -96
  1134. jaclang/vendor/mypyc/irbuild/targets.py +1 -3
  1135. jaclang/vendor/mypyc/irbuild/util.py +2 -8
  1136. jaclang/vendor/mypyc/irbuild/vtable.py +1 -3
  1137. jaclang/vendor/mypyc/lib-rt/CPy.h +638 -0
  1138. jaclang/vendor/mypyc/lib-rt/bytes_ops.c +143 -0
  1139. jaclang/vendor/mypyc/lib-rt/dict_ops.c +446 -0
  1140. jaclang/vendor/mypyc/lib-rt/exc_ops.c +259 -0
  1141. jaclang/vendor/mypyc/lib-rt/float_ops.c +192 -0
  1142. jaclang/vendor/mypyc/lib-rt/generic_ops.c +64 -0
  1143. jaclang/vendor/mypyc/lib-rt/getargs.c +450 -0
  1144. jaclang/vendor/mypyc/lib-rt/getargsfast.c +569 -0
  1145. jaclang/vendor/mypyc/lib-rt/init.c +13 -0
  1146. jaclang/vendor/mypyc/lib-rt/int_ops.c +803 -0
  1147. jaclang/vendor/mypyc/lib-rt/list_ops.c +335 -0
  1148. jaclang/vendor/mypyc/lib-rt/misc_ops.c +942 -0
  1149. jaclang/vendor/mypyc/lib-rt/module_shim.tmpl +18 -0
  1150. jaclang/vendor/mypyc/lib-rt/mypyc_util.h +118 -0
  1151. jaclang/vendor/mypyc/lib-rt/pythoncapi_compat.h +497 -0
  1152. jaclang/vendor/mypyc/lib-rt/pythonsupport.h +533 -0
  1153. jaclang/vendor/mypyc/lib-rt/set_ops.c +17 -0
  1154. jaclang/vendor/mypyc/lib-rt/setup.py +70 -0
  1155. jaclang/vendor/mypyc/lib-rt/str_ops.c +241 -0
  1156. jaclang/vendor/mypyc/lib-rt/test_capi.cc +585 -0
  1157. jaclang/vendor/mypyc/lib-rt/tuple_ops.c +61 -0
  1158. jaclang/vendor/mypyc/lower/__init__.py +0 -0
  1159. jaclang/vendor/mypyc/lower/int_ops.py +113 -0
  1160. jaclang/vendor/mypyc/lower/list_ops.py +45 -0
  1161. jaclang/vendor/mypyc/lower/misc_ops.py +12 -0
  1162. jaclang/vendor/mypyc/lower/registry.py +26 -0
  1163. jaclang/vendor/mypyc/options.py +1 -3
  1164. jaclang/vendor/mypyc/primitives/dict_ops.py +1 -4
  1165. jaclang/vendor/mypyc/primitives/exc_ops.py +3 -12
  1166. jaclang/vendor/mypyc/primitives/int_ops.py +22 -32
  1167. jaclang/vendor/mypyc/primitives/list_ops.py +10 -0
  1168. jaclang/vendor/mypyc/primitives/misc_ops.py +28 -22
  1169. jaclang/vendor/mypyc/primitives/registry.py +56 -19
  1170. jaclang/vendor/mypyc/primitives/set_ops.py +1 -3
  1171. jaclang/vendor/mypyc/rt_subtype.py +1 -2
  1172. jaclang/vendor/mypyc/sametype.py +2 -5
  1173. jaclang/vendor/mypyc/subtype.py +3 -12
  1174. jaclang/vendor/mypyc/test/test_alwaysdefined.py +2 -6
  1175. jaclang/vendor/mypyc/test/test_analysis.py +8 -24
  1176. jaclang/vendor/mypyc/test/test_cheader.py +12 -4
  1177. jaclang/vendor/mypyc/test/test_emit.py +4 -14
  1178. jaclang/vendor/mypyc/test/test_emitclass.py +1 -8
  1179. jaclang/vendor/mypyc/test/test_emitfunc.py +30 -77
  1180. jaclang/vendor/mypyc/test/test_emitwrapper.py +1 -3
  1181. jaclang/vendor/mypyc/test/test_exceptions.py +4 -12
  1182. jaclang/vendor/mypyc/test/test_external.py +1 -5
  1183. jaclang/vendor/mypyc/test/test_irbuild.py +2 -6
  1184. jaclang/vendor/mypyc/test/test_ircheck.py +6 -17
  1185. jaclang/vendor/mypyc/test/test_literals.py +1 -4
  1186. jaclang/vendor/mypyc/test/test_lowering.py +56 -0
  1187. jaclang/vendor/mypyc/test/test_namegen.py +1 -4
  1188. jaclang/vendor/mypyc/test/test_optimizations.py +68 -0
  1189. jaclang/vendor/mypyc/test/test_refcount.py +3 -9
  1190. jaclang/vendor/mypyc/test/test_run.py +12 -38
  1191. jaclang/vendor/mypyc/test/test_serialization.py +1 -3
  1192. jaclang/vendor/mypyc/test/test_struct.py +3 -11
  1193. jaclang/vendor/mypyc/test/test_tuplename.py +4 -13
  1194. jaclang/vendor/mypyc/test/test_typeops.py +1 -4
  1195. jaclang/vendor/mypyc/test/testutil.py +2 -6
  1196. jaclang/vendor/mypyc/test-data/alwaysdefined.test +732 -0
  1197. jaclang/vendor/mypyc/test-data/analysis.test +470 -0
  1198. jaclang/vendor/mypyc/test-data/commandline.test +245 -0
  1199. jaclang/vendor/mypyc/test-data/driver/driver.py +48 -0
  1200. jaclang/vendor/mypyc/test-data/exceptions-freq.test +125 -0
  1201. jaclang/vendor/mypyc/test-data/exceptions.test +699 -0
  1202. jaclang/vendor/mypyc/test-data/fixtures/ir.py +373 -0
  1203. jaclang/vendor/mypyc/test-data/fixtures/testutil.py +103 -0
  1204. jaclang/vendor/mypyc/test-data/fixtures/typing-full.pyi +169 -0
  1205. jaclang/vendor/mypyc/test-data/irbuild-any.test +236 -0
  1206. jaclang/vendor/mypyc/test-data/irbuild-basic.test +3399 -0
  1207. jaclang/vendor/mypyc/test-data/irbuild-bool.test +424 -0
  1208. jaclang/vendor/mypyc/test-data/irbuild-bytes.test +181 -0
  1209. jaclang/vendor/mypyc/test-data/irbuild-classes.test +1302 -0
  1210. jaclang/vendor/mypyc/test-data/irbuild-constant-fold.test +480 -0
  1211. jaclang/vendor/mypyc/test-data/irbuild-dict.test +584 -0
  1212. jaclang/vendor/mypyc/test-data/irbuild-dunders.test +215 -0
  1213. jaclang/vendor/mypyc/test-data/irbuild-float.test +497 -0
  1214. jaclang/vendor/mypyc/test-data/irbuild-generics.test +150 -0
  1215. jaclang/vendor/mypyc/test-data/irbuild-glue-methods.test +437 -0
  1216. jaclang/vendor/mypyc/test-data/irbuild-i16.test +526 -0
  1217. jaclang/vendor/mypyc/test-data/irbuild-i32.test +598 -0
  1218. jaclang/vendor/mypyc/test-data/irbuild-i64.test +2144 -0
  1219. jaclang/vendor/mypyc/test-data/irbuild-int.test +194 -0
  1220. jaclang/vendor/mypyc/test-data/irbuild-isinstance.test +109 -0
  1221. jaclang/vendor/mypyc/test-data/irbuild-lists.test +513 -0
  1222. jaclang/vendor/mypyc/test-data/irbuild-match.test +1717 -0
  1223. jaclang/vendor/mypyc/test-data/irbuild-math.test +64 -0
  1224. jaclang/vendor/mypyc/test-data/irbuild-nested.test +807 -0
  1225. jaclang/vendor/mypyc/test-data/irbuild-optional.test +536 -0
  1226. jaclang/vendor/mypyc/test-data/irbuild-set.test +806 -0
  1227. jaclang/vendor/mypyc/test-data/irbuild-singledispatch.test +257 -0
  1228. jaclang/vendor/mypyc/test-data/irbuild-statements.test +1060 -0
  1229. jaclang/vendor/mypyc/test-data/irbuild-str.test +312 -0
  1230. jaclang/vendor/mypyc/test-data/irbuild-strip-asserts.test +12 -0
  1231. jaclang/vendor/mypyc/test-data/irbuild-try.test +523 -0
  1232. jaclang/vendor/mypyc/test-data/irbuild-tuple.test +386 -0
  1233. jaclang/vendor/mypyc/test-data/irbuild-u8.test +543 -0
  1234. jaclang/vendor/mypyc/test-data/irbuild-unreachable.test +241 -0
  1235. jaclang/vendor/mypyc/test-data/irbuild-vectorcall.test +153 -0
  1236. jaclang/vendor/mypyc/test-data/lowering-int.test +377 -0
  1237. jaclang/vendor/mypyc/test-data/lowering-list.test +33 -0
  1238. jaclang/vendor/mypyc/test-data/opt-copy-propagation.test +400 -0
  1239. jaclang/vendor/mypyc/test-data/opt-flag-elimination.test +296 -0
  1240. jaclang/vendor/mypyc/test-data/refcount.test +1482 -0
  1241. jaclang/vendor/mypyc/test-data/run-async.test +173 -0
  1242. jaclang/vendor/mypyc/test-data/run-attrs.test +318 -0
  1243. jaclang/vendor/mypyc/test-data/run-bench.test +196 -0
  1244. jaclang/vendor/mypyc/test-data/run-bools.test +229 -0
  1245. jaclang/vendor/mypyc/test-data/run-bytes.test +302 -0
  1246. jaclang/vendor/mypyc/test-data/run-classes.test +2505 -0
  1247. jaclang/vendor/mypyc/test-data/run-dicts.test +334 -0
  1248. jaclang/vendor/mypyc/test-data/run-dunders.test +945 -0
  1249. jaclang/vendor/mypyc/test-data/run-exceptions.test +448 -0
  1250. jaclang/vendor/mypyc/test-data/run-floats.test +516 -0
  1251. jaclang/vendor/mypyc/test-data/run-functions.test +1310 -0
  1252. jaclang/vendor/mypyc/test-data/run-generators.test +682 -0
  1253. jaclang/vendor/mypyc/test-data/run-i16.test +338 -0
  1254. jaclang/vendor/mypyc/test-data/run-i32.test +336 -0
  1255. jaclang/vendor/mypyc/test-data/run-i64.test +1519 -0
  1256. jaclang/vendor/mypyc/test-data/run-imports.test +265 -0
  1257. jaclang/vendor/mypyc/test-data/run-integers.test +540 -0
  1258. jaclang/vendor/mypyc/test-data/run-lists.test +411 -0
  1259. jaclang/vendor/mypyc/test-data/run-loops.test +485 -0
  1260. jaclang/vendor/mypyc/test-data/run-match.test +283 -0
  1261. jaclang/vendor/mypyc/test-data/run-math.test +106 -0
  1262. jaclang/vendor/mypyc/test-data/run-misc.test +1170 -0
  1263. jaclang/vendor/mypyc/test-data/run-multimodule.test +887 -0
  1264. jaclang/vendor/mypyc/test-data/run-mypy-sim.test +138 -0
  1265. jaclang/vendor/mypyc/test-data/run-primitives.test +375 -0
  1266. jaclang/vendor/mypyc/test-data/run-python37.test +159 -0
  1267. jaclang/vendor/mypyc/test-data/run-python38.test +88 -0
  1268. jaclang/vendor/mypyc/test-data/run-sets.test +150 -0
  1269. jaclang/vendor/mypyc/test-data/run-singledispatch.test +698 -0
  1270. jaclang/vendor/mypyc/test-data/run-strings.test +641 -0
  1271. jaclang/vendor/mypyc/test-data/run-traits.test +411 -0
  1272. jaclang/vendor/mypyc/test-data/run-tuples.test +258 -0
  1273. jaclang/vendor/mypyc/test-data/run-u8.test +303 -0
  1274. jaclang/vendor/mypyc/transform/copy_propagation.py +94 -0
  1275. jaclang/vendor/mypyc/transform/exceptions.py +1 -5
  1276. jaclang/vendor/mypyc/transform/flag_elimination.py +108 -0
  1277. jaclang/vendor/mypyc/transform/ir_transform.py +368 -0
  1278. jaclang/vendor/mypyc/transform/lower.py +33 -0
  1279. jaclang/vendor/mypyc/transform/refcount.py +7 -30
  1280. jaclang/vendor/mypyc/transform/uninit.py +4 -15
  1281. jaclang/vendor/pluggy/__init__.py +15 -11
  1282. jaclang/vendor/pluggy/_callers.py +34 -5
  1283. jaclang/vendor/pluggy/_hooks.py +35 -7
  1284. jaclang/vendor/pluggy/_manager.py +26 -3
  1285. jaclang/vendor/pluggy/_result.py +0 -15
  1286. jaclang/vendor/pluggy/_version.py +16 -0
  1287. jaclang/vendor/pluggy/_warnings.py +27 -0
  1288. jaclang/vendor/pluggy-1.5.0.dist-info/LICENSE +21 -0
  1289. jaclang/vendor/pluggy-1.5.0.dist-info/METADATA +155 -0
  1290. jaclang/vendor/pluggy-1.5.0.dist-info/RECORD +14 -0
  1291. jaclang/vendor/pluggy-1.5.0.dist-info/top_level.txt +1 -0
  1292. jaclang/vendor/pygls/__init__.py +25 -0
  1293. jaclang/vendor/pygls/capabilities.py +460 -0
  1294. jaclang/vendor/pygls/client.py +176 -0
  1295. jaclang/vendor/pygls/constants.py +26 -0
  1296. jaclang/vendor/pygls/exceptions.py +215 -0
  1297. jaclang/vendor/pygls/feature_manager.py +244 -0
  1298. jaclang/vendor/pygls/lsp/__init__.py +139 -0
  1299. jaclang/vendor/pygls/lsp/client.py +1961 -0
  1300. jaclang/vendor/pygls/progress.py +79 -0
  1301. jaclang/vendor/pygls/protocol/__init__.py +78 -0
  1302. jaclang/vendor/pygls/protocol/json_rpc.py +560 -0
  1303. jaclang/vendor/pygls/protocol/language_server.py +569 -0
  1304. jaclang/vendor/pygls/protocol/lsp_meta.py +51 -0
  1305. jaclang/vendor/pygls/py.typed +2 -0
  1306. jaclang/vendor/pygls/server.py +616 -0
  1307. jaclang/vendor/pygls/uris.py +184 -0
  1308. jaclang/vendor/pygls/workspace/__init__.py +97 -0
  1309. jaclang/vendor/pygls/workspace/position_codec.py +206 -0
  1310. jaclang/vendor/pygls/workspace/text_document.py +238 -0
  1311. jaclang/vendor/pygls/workspace/workspace.py +323 -0
  1312. jaclang/vendor/pygls-1.3.1.dist-info/LICENSE.txt +201 -0
  1313. jaclang/vendor/pygls-1.3.1.dist-info/METADATA +105 -0
  1314. jaclang/vendor/pygls-1.3.1.dist-info/RECORD +24 -0
  1315. jaclang/vendor/pygls-1.3.1.dist-info/WHEEL +4 -0
  1316. jaclang/vendor/typing_extensions-4.12.2.dist-info/LICENSE +279 -0
  1317. jaclang/vendor/typing_extensions-4.12.2.dist-info/METADATA +67 -0
  1318. jaclang/vendor/typing_extensions-4.12.2.dist-info/RECORD +5 -0
  1319. jaclang/vendor/typing_extensions-4.12.2.dist-info/WHEEL +4 -0
  1320. jaclang/vendor/typing_extensions.py +1209 -641
  1321. jaclang-0.6.5.dist-info/METADATA +106 -0
  1322. jaclang-0.6.5.dist-info/RECORD +1476 -0
  1323. jaclang-0.6.5.dist-info/WHEEL +4 -0
  1324. jaclang-0.6.5.dist-info/entry_points.txt +3 -0
  1325. jaclang/compiler/generated/jac_parser.py +0 -4069
  1326. jaclang-0.6.1.dist-info/METADATA +0 -17
  1327. jaclang-0.6.1.dist-info/RECORD +0 -430
  1328. jaclang-0.6.1.dist-info/entry_points.txt +0 -2
  1329. jaclang-0.6.1.dist-info/top_level.txt +0 -1
  1330. /jaclang/{compiler/generated/__init__.py → vendor/attr/py.typed} +0 -0
  1331. {jaclang-0.6.1.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'eJzsnQmcU9X59yezhBlCFEZQCEVEE2uhTYtGFClBQLaGMDhsWmvHYRgUBAIJI4l1oFo7tpqupFpHLF1otabYTmd1OlZr64b7Oi7jvu+Oxn17z7nnSeZ8xdrl/bf/t33l89Hf+d4kNzf3Pvd5nvOcc+58vexHRUWuIv2vMXNQ2r2+Np6oj2d0e/Ca+mR9vKYutm6lwxUb6+NrV62rXZPIHJ85qDGTdh2ZiRQlGjMnlUdcRoqNlBgpNVJmxG1kkJFyIxVGBhvxGBlixGtkDyN7GhlqZJiRSiN7GRluZISRvY3sY2SkkVFGfEZGG/mUkTFG9jUy1sh+RsYZ2d/IAUb8RgJGDjTyaSMHGfmMkfFGJhj5rJHPGQka+byRLxiZaORgI4cYCRk51MgkI4cZOdzIZCNHGJli5ItGphoJG5lm5Egj043MMDLTyFFGZhmZbWSOkblG5hn5kpGIkflGokYWGKkystDI0UaqjSwystjIEiNLjSwzcoyRY4182chxRr5i5HgjXzVSY+QEI7VGlhupM7LCSL2RlUZONHKSkVVGVhs52cgaI2uNrDMSM7LeyAYjcSMJIxuNNBg5xcgmI0kjKSOnGvmakdOMNBrZbGSLka8bOd3IGUa+YeRMI9800mTkLCPfMvJtI2cbOcdI2sh3jHzXyPeMfN/ID4z80MhWIxkjPzJyrpHzjPzYyPlGmo1cYGSbkQuN/MTIdiM/NfIzIz838gsjO4z80sivjFxk5GIjvzZyiZGskd8Y2WnkUiO/NfK7RH3averEdbF4vfZy6UEzq6LRWQsWZ9LFyxZl6tPeE2vi9SfWJ2tWrqk9MaH8X7qiIVFfszy1sT6R+XbeZ25Mra/PpAcr17mxPrmxoXZNJl1e42ytqcmkK+brN83UfrUh7TEed8DNlsUb1tSLi1UH1GKO6/dGWo20GWk30mGk00iXkcuMdBv5g5EeI5cb+aORK4xcaeRPRq4y8mcjfzFytZFrjFxr5Doj1xvZZeQGIzcaucnIzUZuMXKrkduM3G7kDiN3GrnLyN1Geo3cY+ReI/cZud9In5EHjDxo5CEjDxt5xMijRh4z8riRJ4w8aeQpI08becbIs0aeM/K8kReMvGjkJSMvG+k38oqRV43kjLxm5HUjbxh508hbRt428o6Rd428Z+R9Ix84Ei0yMTjqEi0WLREtFS0TdYsOEi0XrRAdLOoRHSLqFd1DdE/RoaLDRCtF9xIdLjpCdG/RfURHio4S9YmOFv2U6BjRfUXHiu4nOk50f9EDRP2iAdEDRT8tepDoZ0THi04Q/azo50SDop8X/YLoRNGDRQ8RDYkeKjpJ9DDRw0Unix4hOkX0i6JTRcOi00SPFJ0uOkN0puhRorNEZ4vOEZ0rOk/0S6KS20Xni0ZFF4hWiS4UPVq0WnSR6GLRJaJLRZeJHiN6rOiXRY8T/Yro8aJfFa0RPUG0VnS5aJ3oCtF60ZWiJ4qeJLpKdLXoyaJrRNeKrhONia4X3SAaF02IbhRtED1FdJNoUjQleqro10RPE20U3Sy6RfTroqeLniH6DdEzRb8p2iR6lui3RL8terboOaJp0e+Iflf0e6LfF/2B6A9Ft4pmRH8keq7oeaI/Fj1ftFn0AtFtoheK/kR0u+hPRX8m+nPRX4juEP2l6K9ELxK9WPTXopeIZkV/I7pT9FLR34r+TrRF9PeiraJtou2iHaKdol2il4l2i/5BtEf0ctE/il4heqXon0SvEv2z6F9Erxa9RvRa0etErxfdJXqD6I2iN4neLHqL6K2it4neLnqH6J2id4neLdoreo/ovaL3id4v2if6gOiDog+JPiz6iOijoo+JPi76hOiTok+JPi36jOizos+JPi/6guiLoi+JvizaL/qK6KuiOdHXRF8XfUP0TdG3RN8WfUf0XdH3RN8X/UC0yHS+oy7RYtES0VLRMlG36CDRctEK0cGiHtEhol7RPUT3FB0qOky0UnQv0eGiI0T3Ft1HdKToKFGf6GjRT4mOEd1XdKzofqLjRPcXPUDULxoQPVD006IHiX5GdLzoBNHPin5ONCj6edEviE4UPVj0ENGQ6KGik0QPEz1cdLLoEaJTRL8oOlU0LDpN9EjR6aIzRGeKHiU6S3S26BzRuaLzRL8kKkWd6HzRqOgC0SrRhaJHi1aLLhJdLLpEdKnoMtFjRI8V/bLocaJfET1e9KuiNaIniNaKLhetE10hWi+6UvRE0ZNEV4muFj1ZdI3oWtF1ojHR9aIbROOiCdGNog2ip4huEk2KpkRPFf2a6GmijaKbRbeIfl30dNEzRL8heqboN0WbRM8S/Zbot0XPFj1HNC36HdHvin5P9PuiPxD9oehW0Yzoj0TPFT1P9Mei54s2i14guk30QtGfiG4X/anoz0R/LvoL0R2ivxT9lehFoheL/lr0EtGs6G9Ed4peKvpb0d+Jtoj+XrRVtE20XbRDtFO0S/Qy0W7RP4j2iF4u+kfRK0SvFP2T6FWifxb9i+jVoteIXit6nej1ortEbxC9UfQm0ZtFbxG9VfQ20dtF7xC9U/Qu0btFe0XvEb1X9D7R+0X7RB8QfVD0IdGHRR8RfVT0MdHHRZ8QfVL0KdGnRZ8RfVb0OdHnRV8QfVH0JdGXRftFXxF9VTQn+pro66JviL4p+pbo26LviL4r+p7o+6IfiBaZqnvUJVosWiJaKlom6hYdJFouWiE6WNQjOkTUK7qH6J6iQ0WHiVaK7iU6XHSE6N6i+4iOFB0l6hMdLfop0TGi+4qOFd1PdJzo/qIHiPpFA6IHin5a9CDRz4iOF50g+lnRz4kGRT8v+gXRiaIHix4iGhI9VHSS6GGih4tOFj1CdIroF0WnioZFp4keKTpddIboTNGjRGeJzhadIzpXdJ7ol0RlNCc6XzQqukC0SnSh6NGi1aKLRBeLLhFdKrpM9BjRY0W/LHqc6FdEjxf9qmiN6AmitaLLRetEV4jWi64UPVH0JNFVoqtFTxZdI7pWdJ1oTHS96AbRuGhCdKNog+gpoptEk6Ip0VNFvyZ6mmij6GbRLaJfFz1d9AzRb4ieKfpN0SbRs0S/Jfpt0bNFzxFNi35H9Lui3xP9vugPRH8oulU0I/oj0XNFzxP9sej5os2iF4huE71Q9Cei20V/Kvoz0Z+L/kJ0h+gvRX8lepHoxaK/Fr1ENCv6G9GdopeK/lb0d6Itor8XbRVtE20X7RDtFO0SvUy0W/QPoj2il4v+UfQK0StF/yR6leifRf8ierXoNaLXliTq02WJjbXxjZnjM6sfLCkqqi2MSpiBjNI1tWvimZP+lB680Nlshi5OcjkjxhtjJ9evS+ihi0hR2j1jWc30BUdlIq50RW287iSzg0hxunT9Kt0oSVdEltUcNWv+rMWzMpHS9IiamrUNazauSmyMr1p3Ys36NQ2JmoMPyUTK0oNmHTVnVk3VwkzEnS5dsGT+/ExkUNpdPaN6+kz1yfL04KOqZtYsWlw9b8GcTKQiPUjtdtaCJdFMZHB6cG181caT1tZvXFWXiXjS5RvjqZrExrUbM5Eh6XL1vurp8xapfXjTQ2o3xtauqqupO6l21bpMZI/04BWr6jbW1MXWro9nInumS/WIdyYyND148bELC182LO1RO6laOqu6et5Raj+V6dIZVVXq+PZKe2SH5scOT5dUzVyciYxwvnX6omMXzMxE9nYgOn3xzLmZyD7pQXrP0xccm4mMTA+ePmPe/HmLj3V+9SjnTM2LLqyqVrvwObRo8fTF89Q+Rqfd8+VEfCrtSayvr1tVu6YmXr8yExnjnIm5s6rVa/s67XkL5qkdjE17qmctXlK9oGbuvAWK90vvVVOzor4uFleHHE+YM39oJjJO7Xrh9OpZCzKR/dPl9esa1qp3qf0ekC6fOX/6okXOsfnTFSfWr8ufp0C6VL8vEzkwPXhN7MRVdepYYmr7p9OePNauW5GJHJTeo37FifX6OPNn/DPp8jXq2tecUrsmExmfLlc/sLomukSdywnpcn1m5s9bpA72s+lhNc631cbra7Sl1hx8cCbyubRn+aqNm1Yl6s3+g+nBs9U10mdJn7LPpwevrd2oTNBc+i+kB9XF1q2rr1Ptiekh6sQsrFq0WM7OwcYUatasUldcH8shaXfDuvW1dSdnIqH04Njy1epz5gQfmh4Srz9lVWLVRtnxJOeCzqieNT2SiRyWrtikbE9eOjxdaW6CWE3t8lVr8r96snNdqquq1DcfkXar9uJqZQBT0hXLps+PzKp2zvEX04Pzv06fzKnO+2ZOV9clrMy0cOEykWlpd94yj0wPmr/o6CXT9cWf7vzGo5SlL5gzfY7aMMM5zqXzFukfPDM9wjmyWNw5slUbU/mDOyo9OF6rv9X8hFnpCm3MNeoqqtMyOz1oQdVR5rac4xzR7KrqTGRuumTurGMykXnp4fo6raivWb4mVneyuVQTv5CJfCk92D5lkfTg1Kr6NStq6pPagOanB9WuS5nTG02Xr0jUJNbXblLHsiDtqV+jPqiOrV5fiipjFOo/9XsWpvd0rlldbM0adXVWxdQHjlYmV7t2+Ypa2XO1c9tUzfjSLH0fLkqXON+xOD1Yn/9Zci6WOG8yd0cmstQ5TYsWTl+mYJm6J2sWzls4q2b2MuXUjklX1K2pTSTMoR6bHrzppFVr8mfqy2nv+pT16zOR49Iey7llIl9Je+L1Gxvi6+QTx6c9C6oWzK+aOX2+c0a/mi53Loqz95r0oFUr5Y0nOEeo7r5Z2rBr02XReQuWLMpElqcrnPOxZOF8dULq0mX6dp+diaxw3Iq5TPXp8qNmzawyRrXSnEDjrk5MD7XcVc1yx9pPSg9amT/eVfqWcW66TGS1cwjGPjORk9OeFfVr6jfmf/sasRKzj7XpwSeuiS3Pu6R16cH6atQnEs41iqkrrL2sc8+vd872sfNmzVend0O6wlwq51jjAzeP44bEPhPpkgX6xtmY9qxauz4Wz9tUgzIiY8mZyCnaDtV1WnXiurX16zYa5zZxciayyXjiZdP1dU+my9bHNtUrM0mlvcqf1a6qKezhVOcW1baeiXxNRceTVq1U33Ga4/lnVi1YrM6/eqUxXbpoVnReJrI5XT5gJVvMST5qnra5rxdigrmDTnd2vGzeYuX9z3COZtncefrqfUO9Ue5E56ydaa7t7PlV09Vuvpl2r6yt26g9QVN6Tx1UV9TUbUzmLe0sJ/A65+VbA153XUwd87fT5eu0TTo7PdvsdMaxi2cp8znHmPqShfqSpp2bYt6CmfOX6B/9nQHnmtTf+t30kOUNq5Qxr5OQ/r2B43UCxPeV89euXILCD9TNUbvmZJVCOF/8Q+VgC++uU+dha9qrr+4qZ06EswOVZiyYHlVf/aP0kHWxdeqH5Q3o3HTFnPlVM+QuOc8ExjkLqrSb+3G6IlFf+NbznbO7aNZ8dRM0p0sXztd3yQXpEifkbdO/cNaimTXmay5UKYZKGJx9/iTtkaM1xrTdOTNOwMtEfpqu2NiwXt3njsX+TN/Elt39PO1VH40rAzMGl4n8Ij1IH5Lz7h1pr4lJR+fD0i/TQ1atq1vTsCJ/7/xKwqzzUy9SVu1MPpEXL3acrMqWMpFfm4xqlTn9l5jMwflhWZXi6NPo7OE36T3sE6vP9U7z3kV6L5emy8Skfqu+V8JxJvK7dPnKWP7Xt6QHLTx2wfx5C9RZ+r26zAmV8uV/bmt6jxXKKNadWHti/hjb0qXaxDORdpOFHaWjTUe6ZMY85UE71fXZWLuxXt+HmUhXukJSCn1cl6Ur1tWuVZbsHEK3ut91kNTBUt/3cr//QfncjfE18l094qtNVnR5unzW/PnzFi6apy7TH1XeV7jlM5ErjClE5qnLe2W6bGbV/Cp1OCqFra2rU66oZmOt8nBXpYeae+mkWhVk1tQ2JNSp/XN6T41mZzXaqDORv6i0aNHcebPVl16drpg5vbq6SsV8dedfk65w7vwZEX3rX+tcrgX6h1+XrjC3ZM2sozOR6x1SmbFDu9LFWm5IF89RO7xRpVZmh8op35QuOUrfxjenPU4ytFBt1u+9JV2hrpty40fNW5qJ3Jou1hfntrRHPqneODETuT1drr5FvUl/4o60R2KXObY70+7pR5nvv0uFcZVR11SpjOXudEW188ucV3r1GVVx0bkr7km71bc52+9VR6y+8L60W2Vnzpb70yXRKrXbPucnOzn/A+lB6tiNE3zQ+cHHyLE8lB5SOHpnw8PqZ+of8ki6eL76tY+qHGbJDOeVx1S8Ujsxx/y4CWnqdD5hWuo6P5muUNlz/jCeSlfMHzj8p9NlzgnIRJ5xDmveIvXRZwvnV21/rnDK5jun7HnVp5AL+0K6ZI7ulbyofmSVOVEvOd+q9/eyJKfqemQi/Y67PUZvfyVdMl9/6NX0oOp86pVzPjVDpXSvacOLRqdnIq+r75G8+g0nikyfofzCdB0i3rSvospr37IPUfHb6fIBe3tHZSTWFX/X+arFVZnIe/kXzIfeN/fifN3R+SA9KP/7o0Uux7XNWqBTzqjLZd52jIqH0WKXtYuJmWiJK/+5+Zloqcv64oMz0TKX883TF2WibrOT2dVV0Ux0kEtPeyvkQNFyl3Mh5uo3VrjSlU7oX6Xy8HjN+tqNKttel4kOdqX3lMx7YKPH5aTD1UsW6SsRHaLQ8aQzlAfPRL2utCfvWGcp24vu4RrwtAvnzVJdo+ieLsdZmNCRiQ51pUv9znuHmQNWMVD96koDM6erMxXdSx1JXe16laPVDxzJcFd6iIDxBtER6kfGrB+wt0snHANbJPE9JBPdR+298LaRau8nb6rhvkapAzdJZeF9Ppfuf8ue6jdkoqNd6WEJlZKpjCu2buB9n3Klh6rXG+rX1VmHO8alHeEA76u+dW3t+vVO/zq/caz6qOkd1dUmChdrP+d3DPSaJHFSl3ucunROeP/QpdtfnZv6U3SOJd4zeoA66ysb1tUZHx/1q6NxXL58RcDl5Bmz5y2YPn++ssADXYU8Tu30pEz0084x6BxUbYhvTEh/L5SJHuSSDp5c388oHnhfJjpembbzunORJ6hfqFJUJ/9zumQrYnWZ6GfV9ZCtmejnXLqHry9C0FVIWU+pjWein9c/Il5f76TzmegX1KfUx52YEZ3o0lULcx6ctEOO8LBM9GB1NlaqJCn/SiZ6iNoigUS2hPQPXreiPlmTWLOqTu38UHWH1K1dXxNbn4lOcqX3rnH6Lir8OAYipqR2fpg+1dYrmejh+seYLZnoZHWZrZTXvOMI9TucIL8yrgJ0dIr6bgdj652YG/2i3oPesDGWiU51SUagOmOZaFh/dE2+Hxid5kqP0qYBO5KDOzQTPdIlOYhziqarn1TbcKLzk2Y4+8l3ZaIzxePMV/2U6FHqJ62tX7tcnS8xj1mu9Eh1AlAmkKrQ5Ex0tvqN6iBiKxrWSB3gC5noHFd6L+uk6xKB+fFzd39BORl1Guapr1X3oXPqzFu/pA9yACPKHNT7a9cKz1cHLR/IRKPqIFatO6k+rna2wklV1Nlf4JLMxvzKKpcurwzYvTnYwzPRherMmOPPRI92OcW2aLVjUPZ5MG9X13yRumDygtnxYmXVtcuV0avOQKG3El2izr5OWcx7lhoDNTeV/sVyD6lbaJn65fYLmegxA/efOTnHqm8o3L81zllQb/uy+n3mjDj3x3GONXz4beZr1HX6inMfrFMdHim8RY9XHzCZ1kdeqq8aVz3rmJmzFiqfXKOdRrKufv1Gp2sQPcGV9tXUfNjVifWpn1Xr+AyrOygvZaLLnbtt3cANWedK71NTA4crb56Uia5Qvlhlt1Incsy33olnA7xS7TDPzn1yovUGfRedpH57ns1dt8o+Ou3kzBeq6LBafdZ0LcxpOFl52RrnU9b7lPdd47gj2ZqJrnV+g+P6EhvgJdWduE79BryUicacAxjonckNpX7wem3Yp6j3rVKnZoPz7fm+uexR2WzcuSc/ZPLmZbWLhNl5oe4nn1M35kZllYmG5TU6x89EGxyrlKvqHIsJLuoinaLd0sALmegm5/bRn7N9oDqUpMt0GeR9KeNMFlarVDJ6ah5U+hz9mkk7Fi6ZkYme5nyzVYqUQ5yYaUi7nc6JVK+d/0WKopeXNmUiLtWYVqYaxarxF72lRDVu1I1S1Wh3qUaZatyjt7j1e/SWQarRq7eUq8Yf9ZYK1WjS+xmsGn36JY9qPKgbQ1Tjdt3wqsajurGHatymP7WnatyvtwxVjUf0lmGq8Su9pVI1duote6nG03rLcNXw6MYI1bheN/ZWjRbd2Ec1inVjpGrs0I1RqtGlGz7VmKUPbLRqHKC3fEo1MnrPY1Rjm27sqxrf1I2xqnGNfs9+qnGFboxTjbRu7K8aV+nGAapxrW741Vn0KA3oX6M3HKga9+nGp1Xjd7qhT/REpZ9RWqx0vHrhl/qFCWrDfko/qzZcpDd8TjV2lahGUL1ytNLPqw0X6s98Qf8A/cpE1Vikj/Jg9ZYblB6iNpyo3xJSjT/otxyqGh16yyTV6NaNw1SjRzcOV42r9XmYrI9B7+YI1XhBvzRFNa7TL31R/wC9ZapqdOrDCqvGfvqlaeo7z1d6pNrwDf3p6arxY/2dM/RX6cZM9ZYjlB6lNvxQb5ilGt/VjdmqcYpuzFGNKboxVzUG693MU41n9Vd+STXu0I2IavxZN+arxu91I6oaSd1YoM+rblSpxl364wvVd/5a6dFqwyi942rVuFkf8CLVmKO3LNZbdGOJaszXLy1VjQW6sUw1LtWNY/SX68axqtGmG19WjYt14zj9Zn0qvqIaP9NbjleN2brxVdW4Vb9Uoxon6C0nqMYvdKNWNY7VjeXqAIcprVMbLtEbVuhv0IderxoH6sZK9ZbDlJ6oNkT0W05SG76vdJXaENcbVqtGQL/1ZNWYrLesUY3RurFWNU7XjXWqEdONmPr0PUrXqw1+vWGDanxafzquGmt0I6EaF+iXNmrD0Y0GfcF14xTVOFm/Z5M2E70lqW8F3Uhp49I/91R9a+rG11RjX/3SaapRrxuNqnG2bmzW+9GNLaqxt37z11Xjc7pxurYc/dIZqjFcN76hGn/SL52pGjN045uq8apuNGlD0e85SzXe01u+pY1Ab/m2atygt5ytGlt14xx9PfXBp1XjSb3lO6oxTL/5u+qszFL6PaWjlX5f6SalP9BXTJvUD1XjFv3Orfqq6kZGNTbrvf1INUr1lnNVY5NunKctUjd+rHbzgdLz9d2q39usGi/rb75AW6Te8TbV2K5fulA1/qI/9BPVeEO/Z7tq3Ki3/FQ17tXv+ZlqNOhP/Vw1vq8bv9DuT5vvDtV4UDd+qX+3/tSvVOMm3bhINX6r33yxviB6z7/WRq+3XKIax+ktWX0P6q/4jf4u/amdqlGjX7pU/YjpSn+rNjygX/mdajynP92iv1Nv+b1qhPWXt2p/qBtt6kNfUdquNozV++1QG05W2qnvX/2OLtVYol+5TDXG60a3aozUjT/oW1u/p0c1srpxufr0g0r/qO1Gf/UV2p5VoyGix1+dfQwvsU/nlaqxWh9bwZ8X3HjBsRdcZuH6/Ek1JurGVfpu040/a7fgsq2ncOHzrrIhUqyP4S/6UE5ypuQ0aU9o09Wga0DXgkpA14EaQdeDdoFuAN0Iugl0M+gW0K2gpaDbQLeDxoHuAN0Jugt0N6gXdA+oFnQvqA50H2gZ6H5QH+gB0IOgh0APgx4BNYMeBT0Gehz0BOhJ0FOgp0HPgJ4FPQd6HjQetBn0AqgedCXoRVAR6CXQy6B+0CugqaBXQTnQa6CxoNdBb4BGg94EvQUaBHobNAL0DmgO6F3Qe6D3QR/YFC1yAV3EYmIJsZRYRnQDVU5s0wGgC0EVoJGgalA7aDtoA2gKaDaoDLQadCpomE0NkRLtoPNG8IVi21wMPW3TwPkxL74KGgS6ElRnU0OkVH9t3vdXwttXwttXwqNXwqNXwjNXwodXwjNXwvtWwt9WwqdWwotWwotWwm9Wwm8aCoJ2gB4EPQJqBj0Kegz0OOhJ0HOg50GbQfWgItDLoH7QK6C/gI4EXQNqBF0HugF0I+hW0M2g20C3g+4A3QW6G3QPqA50P6gP9ADoIdDDoCdAT4GeBj0DehY0HvQC6ErQi6BpoJdA5TYN3NqVCBqVCBOVCDaVCESVCD2VCDaVCC+VCC+VCC+VCC+VCC+VCC+VCC+VCC+VCC+VCC+VCC+VCC+VCC+VDC+VDC+VDC+VDC+VDC+VjCeViCeViCeViCeViCeViCeViCeViCeViCeViCeViCeViCeViCeViCeViCeViCeVJp6UKcceHaSrY7ES5xoXRYqaTP92S4l+g1t7/vwPPxuX92ychrPxU8/Gz3EoWu7Ci1NAZaBTQcNAU0EXgipAI0DVoHbQBtDFoBZQPWg26HTQNNBqULlNDZFB+iTnf5fbZduaoUGgA0AXgipAI0AjQdWgdtB2mwYunHlxA+hiUAtoCqgeNBtUBjodNA20GlQOOhU0zKaGSLk+yXnfO6nYdpOTkEhNQiI1iYnUJCRSk5BITULqNMmkThX2tXXh2rpwbV24ti5cWxeurQvX1oVr68K1deHaunBtXby2LlxbF66tC9fWhWvrwrV14dq6cG1duLYuXFsXrq0L19aFa+vCtXWZazvYTotDuJohXM0Qr2YIVzOEqxlCWhzCtQ2Za+uxyyWjkFYZuhp0DehaUAnoOlAj6HrQLtANoBtBN4FuBt0CuhW0FHQb6HbQONAdoDtBd4HuBvWC7gHVgu4F1YHuAy0D3Q/qAz0AehD0EOhh0COgZtCjoMdAj4OeAD0Jegr0NOgZ0LOg50DPg8aDNoNeANWDrgS9CCoCvQR6GdQPegU0FfQqKAd6DTQW9DroDdBo0Jugt0CDQG+DRoDeAc0BvQt6D/Q+6AObBvLZUcxnRzGfHcV8dhTzWYNlRDewEJZGIa8bhTRrFNKsUcj5RiHNGoU0axTywVFIukYhHRyFxGoUksNRSKVGIVUchVRxlEmshmgHXRjgfVnZ5rtNZsyiS6e7ekSg3LnARZE3mgZG//IjU4VhXxmtjFaoTDnydtPAKEV0sM6dS/V7jlMvfUZ/qdeO+MWI+MWI+MWI+MWI+MWI+MWI+MWI+MWI+MWI+MWI+MWM+MWI+MWI+MWI+MWI+MWI+MWI+MWI+MWI+MWI+MWI+MWI+MWI+MWI+MUm4u9hR/zDEfEPR8Q/nBH/cET8wxHxD0fEPxwR/3AT8fe0r20Jrm0Jrm0Jrm0Jrm0Jrm0Jrm0Jrm0Jrm0Jrm0Jrm0Jr20Jrm0Jrm0Jrm0Jrm0Jrm0Jrm0Jrm0Jrm0Jrm0Jrm0Jrm0Jrm0Jrm2JubZD9UnOd0XfUPoTx+kXRWeVNmVMb3WwHtDTvdT5pfoTw+xELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELM5ELM5ELM5ELM5ELM5ELM5ELM5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5ELI5EzNDp+Lke/NyGSOU/P/NBz2qY8tFTIAozH/RciPDfmvmwV6OJJ19TX5iIDG90Ak7kcQ0j9OEVdls4vMJR6SP/atlHHt5f/8bCATdE9tY12CH5c9LtnCIvcQ9g4Y7pNudvn3wRN9LbVKjhNkRGmuM2b12AXGUBcpUFyFUMlYDcoKWgyaBxoC2gGaDloAtAm0BloFrQTtAy0OWgSaAgaAdoGKgZNAJUDcqA2kFzQCtAY0DDQReDNoNaQGeC6kFp0GzQWNDpoCJQB+g00BWg1aAJoEtAZ4NOAJ0LOgO0DTQKdCRoX9DeoJGgSlAjaDtoNKgKNAQ0BTQXdA6oDrQeNBR0Hugs0KmgqaDjQReCKkCXghKgiaB9QONBG0BHgKaDVoJ6QNNA5aAloMU2Rfd0AYcShxErieXAhsgou9tXBldaBldaBldahhNdhhNdBndSBnMsg3MpgzspgzmW8XDLcN7L4EHK4DPKYJ1l8Bll8BJl8MFl8BJluEJluPfLcL3KYJ1l8LNl5iT79EmWSBN52wo0BrbYsNyGMhtqbZhkwzAbmm0YYUPGhnYbxtgw3IaLbWixod6GtA1jbTjdhiIbVtswwYZLbDjBhnNt2GbDKAsKd4h5aaQNlTY02lBlwxQb5tpwjg11Nqy34TwbTrXhePtIh+JIL7Vhov2+YXjfeBs22HCEDdNtWGlDjw3TbFhiw2IbzrfBZ8MgGw6wocSGyTaMs2GGDRfYsMmGnTYss+FyG4I27LCh2oY5NqywT3YlTvZmG860YbYNHTacZsMVNpxtwxk2HGnDvjbsbcN2G0bbh12Owx5iw1AbzrJhqg0X2lBhQ8KGfWwot6AhMtpOzUOIJyHEkxDiSQipeQipeQipeQipeQipeQipeQipeQipeQipeQipeQhhIYTUPITUPITUPITUPITUPITUPITUPISQEUJqHkIsDSF6hpCahxBLQ0jNQ0jNQ0jNQ0jNQwisIaTmIYTZEFLzEMJsCKl5CEE3hNQ8hKAbQmoeQmoeQmoeQmoeQngOITUPITUPITUPITUPITUPITUPITUPITUPITUPITUPITUPIRcKITUPITUPIRcKITUPITUPITUPIfkJITUPITUPITUPITUPITUPITUPITUPIfkJITUPITUPIWMMIWMMITUPITUPITUPITUPITUPIUUMITUPITUPITUPITUPIfELIdULITUPITUPMTUPMTUPMTUPMTUPMdcNmazxU7r4sZceE7iupMkUWg7TDV2VObSsST/wQW8qaxoo3URH6E2nFYbvrilpGhgUjO6tN12hNxUGDv/qeOA++r0d+lMjdeuIsiarEqWXdt6GJU16leWtJU1WFUgXa4Y06fpoUfSL+mhH6TLO4Cb92Ai1aWpZ08AopVvpHk0DhafoaP3ekqbCuGX0U3rDmKaPqERFx+iXxjp3YFFk/6aBOll0X/3KQU1WsaowkjnGHmQ7GINsB2OQ7WAOsh2MQbaDMch2MAbZDsYg28FmkG1f/bV6WeRqFNwKS7v+oZVQhVVZhRWJH1cGHGv/4gn4xRPwoybgR03Az5iAnzjB/Kj97CGqBIaoEhiiSmCIKoEhqgSGqBIYokpgiCqBIaoEhqgSGKJKYIgqgSGqBIaoEhiiSmCIKoEhqgSGqBIYokpgiCqBIaoEhqgSGKJKYIgqgSGqBIaoEhiiSmCIKoEhqgSGqBIYokpgiCqBIaoEhqgSGKJKYIgqgSGqBIaoEhiiSmCIKoEhqgSGqBIYokpgiCqBIaoEhqgSGKJKYIgqgSGqBIaoEhiiSmCIKoEhqgSGqBIYokpgiCqBIaoEhqgSGKJKYIgqgSGqBIaoEhiiSmCIKoEhqgSGqBIYokpgiCqBgnsCQ1QJDFElMESVwBBVAkNUCQxRJTBElcAQVQJDVAkMUSUwRJXgEFWCQ1QJDlElOESV4BBVgkNUCQ5RJTBElcAQVQJDVAkMUSUwRJXAEFUCQ1QJDFElMESVwBBVAkNUCQxRJTBElcAQVQJDVAkMUSU4RJUwQyzjdJZRqUPyt/QchLG6tUm39tOtU5xJCPvvnolcVWJnGwM5RiHt+CezDSc5KPrIJCM6Tr9WWdxkpRuSZRSSi91SCv3ABtfHphS7JRADeUMhXThAn4D99dcfUtJkFsB/Se/0AL1pcj4B2pV/AsUXXdb9+Sck9obeAI22qSHi1/G08BXOt75W+lFfYb4+V7rb7nN//5cF8DCRwsMhCg8PKDxVpPCkj8LVLDzuQD9eJOFqsh4vUrjAhYeJFB5CUHh0iH6YyPv6YhYeHfIxTwwpPB+k8MSC3Z8GUnhiwe7J00c/w+Ai/e2FJxYUnp1ReHRB4dEhuz+6oPDEgvwzRAqPDinkYPp5Dt/T+9vtYSK7PdPgbz9dJP+0g92eMvJ3PFxk9xHa/GzA/MMPCs/5KOSWs9Urv2myHvOx+2MRCk/3KKSxuz/mo/BYhMLTEHZ78Efh8QiFJ4AUHvxR6F0UnvdReBhC4cEfhdS58JiPwlMRCo/wKOTH+Wd55J+XUHgIR/5ZCPkneez2AI/8sxEKOXf+IR35xx7kn8jREDnQnuOl53bd78rP7RpV6tyORdEX85O8Bjn+9dP2Hf/X7vNLSvPeYMPfci8fuscPslP/Q5D6H4LOziHs7ByCfsEh6Bccgp7AIeglHGL6BZ+xl6UchmUph+EgDsNBHMaDOAwHcRgO4jB87WHma8frry04soJx4mFIf8VbFcwVTmqH6yOd1F+35ILd7u6+Cl5r98d6FAz4YzqBBT9WMHLt0C5x2X6s4LUKZr+bs/rwfVDwWXkP9WHHlL8/8n4p744+fL/kvVL+dtnNKRXun92dUv6OyjunvAvKO6n8nVbwUQXfZLukyFXaBibYo5qNqEI3ogrdiCp0I2pUjahRNaIS24hKXiPqso2oxDaiktfISk8jSlaNKL42otzaiMJeI8qtjSiwNqJ83YgCayOKW40omzai1NWIwl4jStSNxq18FrN7LuPsnss4u+cydDYuM6nn5+yxggNxlQ7EVToQV8lQCcgNWgqaDBoH2gKaAVoOugC0CVQGqgXtBC0DXQ6aBAqCdoCGgZpBI0DVoAyoHTQHtAI0BjQcdDFoM6gFdCaoHpQGzQaNBZ0OKgJ1gE4DXQFaDZoAugR0NugE0LmgM0DbQKNAR4L2Be0NGgmqBDWCtoNGg6pAQ0BTQHNB54DqQOtBQ0Hngc4CnQqaCjoedCGoAnQpKAGaCNoHNB60AXQEaDpoJagHNA1UDloCWmzTwFiBwaHEYcRKYjmwIRLUrlRFzuhpLhMHo6f/wxXmQkj+h0rNAxXmzxdW3DflBwDyK+43mYy1KLrReecXJEWO/sAlb0jqNNevP5ty3jHRrik/X2zfNIauBl0DuhZUAroO1Ai6HrQLdAPoRtBNoJtBt4BuBS0F3Qa6HTQOdAfoTtBdoLtBvaB7QLWge0F1oPtAy0D3g/pAD4AeBD0Eehj0CKgZ9CjoMdDjoCdAT4KeAj0Negb0LOg50POg8aDNoBdA9aArQS+CikAvgV4G9YNeAU0FvQrKgV4DjQW9DnoDNBr0Jugt0CDQ26ARoHdAc0Dvgt4DvQ/6wKaBmrJBF7GYWEIsJZYR3cBCVmvoANBI0HbQFFAZ6FTQMNCFoApQNagdtAE0G7TapobIwdpB593nVhjWVhjWVhjWVhjWVpjSVpjZVhjWVhjWVpjSVpjZVl6PrbirtsLqtsJCtsKWttIGtsIIt8KYtsJ4t9JattK0ttLwtsLSt8K2tyIKbYVtb6UNbqXRbTWX6BCrEGXi8mGlEoan5+tPM/MVqUFO7Spk98j86JH50SPzo0fmR4/Mjx6ZHz0yP3pkfvTI/OiR+dEj86NH5kePzI8emR89Mj96ZH70yPzokfnRI/OjR+ZHj8yPHpkfPTI/emR+9Mj86JH50SPzo0fmR4/Mjx6ZHz0yP3pkfvTI/OiR+dEj86NH5kePzI8emR89Mj96ZH70yPzokfnRI/OjR+ZHj8yPHpkfPTI/emR+9Mj86JH50SPzo0fmR4/Mjx6ZHz0yP3pkfvTI/OiR+dEj86NH5kePzI8emR89Mj96ZH70yPzokfnRI/OjR+ZHj8yPHpkfPTI/emR+9Mj86JH50SPzo0fmR4/Mjx6ZHz0yP3pkfvTI/OiR+dEj86NH5kePzI8emR89Mj96ZH70yPzokfnRI/OzR+Znj8zPHpmfPTI/e2R+0yM7VLvSXcqzlpRaMe5qlx3/rsYZvxr31tVmN5NsjxyARw7AIwfgkQPwyAF45AA8cgAeOQCPHIBHDsAjB+CRA/DIAXjkADxyAB45AI8cgEcOwCMH4JED8MgBeOQAPHIAHjkAjxyARw7AIwfgkQPwyAF45AA8cgAeOQCPHIBHDsAjB+CRA/DIAXjkADxyAFYTgEcOwCMH4JED8MgBeOQAPHIAHjkAjxyARw7AIwfgkQPwyAF45AA8cgAeOQCPHIBHDsAjB+CRA/DIAXjkADxyAB45AI8cgEcOwCMH4JED8MgBeOQAPHIAHjkAjxyARw7APwTgkQPwyAF45AA8cgAeOQCPHIBHDsAjB+CRA/DIAXjkADxyAB45AI8cgEcOwCMH4JED9MgBeuQAPXKAHjlAjxwwrvQwu6YUwzzFGOYpxjBPMYZ5ijHMU4xhnmIM8xRjmKcYwzzFGOYpxjBPMYZ5ijHMU4xhnmIM8xRjmKcYwzzFGOYpxjBPMYZ5ijHMU4xhnmIM8xRjmKcYwzzFGOYpxjBPMYZ5ijHMU4xhnmIM8xRjmKcYwzzFGOYpxjBPMYZ5ijHMU4xhnmIM8xRjmKcYwzzFGOYpxjBPMYZ5ijHMU4xhnmIM8xRjmKcYwzzFGOYpxjBPMYZ5ijHMU4xhnmIM8xRjmKcYwzzFGOYpxjBPMYZ5ijHMU4xhnmIM8xRjmKcYwzzFGOYpxjBPMYahwxjmKcYwTzGGeYoxzFOMYZ5iDPMUY5inGMM8xRjmKcYwTzGGeYoxzlOMcZ5ijPMUY5ynGOM8xRjnKcY4TzGGeYoxzFOMYZ5iDPMUY5inGMM8xRjmKcYwTzGGeYoxzFOMYZ5iDPMUY5inGMM8xRjmKcYwTzHGeYoxM1h8uPbeulIxRGZ/DZQ1DsyXNYbkyxqfdqbVTN6tALJ//g3PuppM3aPcqXscod9Z+PMu+s8CXa7foP+sTYduFP68UJna24gm8weRprmarL/NU/g7NIW/5VT4O1OFv3Oj/97LT11N1l+5KvzFlvyfcGqITLEqa5FXLds3cL4NR9qwrw2VNrhtqLJhqQ2TbRhnwxYblttwgQ1zbdhkQ5kN59hQa8NQG3basMyGy20I2nCWDTtsaLYhY8MKGy61IWHDRBv2sWG8DWNsGG7DShs223CmDbNtON2GIhs6bJhmwwQbLrHhbBvKbdhmQUPki/LImKHOI2OmWqvXo8MwcmVoC2g5qAxUC5oEGgZqBo0AZUDtoDGg4aCLQS2gelAaNBZ0OqgItBo0AXQJ6ATQuaBtoFGgkaBKUCOoCjQFNBd0DqgOtB50HuhU0PGgS0ETQeNBG0BHgKaDVoJ6QNNAS0CLQeeDfKBBoANAJaDJoHGgGaALQJtAO0HLQJeDgqAdoGrQHNAKmwZ6SObFzaAzQbNBHaDTQFeAzgadAToStC9ob9B20GjQENBQ0FmgqaALQRWgBGgfUDlOYQCnsCES/nvm7r5ZmLv7tslVzC7+4aUB0xrNnn0l2jEfqb86b7IvOcd6NehaUAnobdAu0C2gm0BLQeNAOVAvqBZ0L2gZ6BFQM2gE6DHQ46B3QHNA74LeAz0Heh60GVQPeh/0AWgsqAj0Mqgf9AroL6AjQdeAGkFvgG4AjbZpoPNiXrwRdCvoNtAdoLtAdaDXQPeD+kBv4tBcPLQHQK+CHgZNxW6KuZsnQE+DnsEHS/jBt0DPgsaDXsBuSrmbK/FiGV4c6PCZ974Eeh30KOg60PWgJ0FPgW4G3Q66E3Q36B7Qi6D7QA+CHgL5QAeALgRVgEaCqkHtoO2gDaApoNmgMtBq0KmgYTY1RKbbFUcPKo4eVBw9qDh6UHH0oOLoQcXRg4qjBxVHDyqOHlQcPag4elBx9KDi6EHF0YOKowcVRw8qjh5UHD2oOHpQcfSg4uhBxdGDiqMHFUcPKo4eVBw9qDh6UHH0oOLoQcXRg4qjBxVHDyqOHlQcPag4elBx9KDi6EHF0YOKowcVRw8qjh5UHD2oOHpQcfSg4uhBxdGDiqMHFUcPKo4eVBw9qDh6UHH0oOLoQcXRg4qjBxVHDyqOHlQcPag4elBx9KDi6EHF0YOKowcVRw8qjh5UHD2oOHpQcfSg4uhBxdGDiqMHFUcPKo4eVBw9qDh6UHH0oOLoQcXRg4qjhxVHDyuOHlYcPaw4elhx9LDi6GHF0YOKowcVRw8qjh5UHD2oOHpQcfSg4uhBxdGDiqMHFUcPKo4eVBw9qDh6UHH0oOLoMUXFGXrKspOhx3TSvlsab3L29X/3ut4PpeszdytAnpuf8Pz9/IzoHznznY/S7/yY2dp6Rvcruuvw9zwYpDBJuzBt++MeDDLLDlJuBCk3gpQbQcqNIOVGkHIjSLkRpNwIUm4EKTeClBtByo0g5UaQciNIuRGk3AhSbgQpN4KUG0HKjSDlRpByI0i5EaTcCFJuBCk3gpQbQcqNIOVGkHIjSLkRpNwIUm4EKTeClBtByo0g5UaQciNIuRGk3AhSbgQpN4KUG0HKjSDlRpByI0i5EaTcCFJuBCk3gpQbQcqNIOVGkHIjSLkRpNwIUm4EKTeClBtByo0g5UaQciNIuRGk3AhSbgQpN4KUG0HKjSDlRpByI0i5EaTcCFJuBCk3gpQbQcqNIOVGkHIjSLkRpNwMUm4GKTeDlJtBys0g5WaQcjNIuRGk3AhSbgQpN4KUG0HKjSDlRpByI0i5EaTcCFJuBCk3gpQbQcqNIOVGkHKbIDXbjg3RA3UY6f4bS3m04z8OTwW4XI9KIUrcpBo9Hx8c8mYZ2eUcyBx7ZbsOYt6SfFz7mhNK5uYfb7UMj7v/dyw+midDFglnyOJLdkwLIqYFEdOCiGlBxLQgYloQMS2ImBZETAsipgUR04KIaUHEtCBiWhAxLYiYFkRMCyKmBRHTgohpQcS0IGJaEDEtiJgWREwLIqYFEdOCiGlBxLQgYloQMS2ImBZETAsipgUR04KIaUHEtCBiWhAxLYiYFkRMCyKmBRHTgohpQcS0IGJaEDEtiJgWREwLIqYFEdOCiGlBxLQgYloQMS2ImBZETAsipgUR04KIaUHEtCBiWhAxLYiYFkRMCyKmBRHTgohpQcS0IGJaEDEtiJgWREwLIqYFEdOCiGlBxLQgYloQMS2ImBZkTAsypgUZ04KMaUHGtCBjWpAxLYiYFkRMCyKmBRHTgohpQcS0IGJaEDEtiJgWREwLIqYFEdOCiGlBxLQgYlrQxLTI//5jh15VjSL90n/p84c+eezQP/nYIf3gJpc+T/+Zzx+ab68Y+Klz8+0LyoDOAU0ETQaNAW2zqSESlfzrQGdkcsE/f3sX7urCff7/z1PFtOWtLf6vu73zd/XuT+75v7y9C3d14T7/r32qWNX/fsD8H7+jtLnP+SRg/hN31P9bAfM/845aaObZFkUbXU0fmlC81SkpHK0HBz6teaW8I3qLOjX6kVdF0d/q0sdBunW53vYZ3fqObo3P5+7DTWCs1l/zmnr1TH2G9Pf91tn7IitMR66x0nwDg2w4wIYSG9w2LLVhsg3jbNhiwwwblttwgQ2bbCizodaGnTYss+FyGybZELRhhw3DbGi2YYQN1TZkbGi3YY4NK2wYY8NwGy62YbMNLTacaUO9DWkbZtsw1obTbSiyocOG02y4wobVNkyw4RIbzrbhBBvOteEMG7bZMMqGI23Y14a9bRhpQ6UNjTZst2G0DVU2DLFhig1zbTjHhjob1tsw1IbzbDjLhlNtmGrD8TZcaEOFDZfakLBhog372DDehg02HGHDdBtW2tBjwzQbym1YYsNiCwb+jJZDQ0HDQJU2NUQW232QJFYtJ7FqOYlVy0msWk5i1XISq5aTWLWcxKrlJFYtJ7FqOYlVy0msWk5i1XISq5aTWLWcxKrlJFYtJ7FqOYlVy0msWk5i1XISq5aTWLWcxKrlJFYtJ7FqOYlVy0msWk5i1XISq5aTWLWcxKrlJFYtJ7FqOYlVy0msWk5i1XISq5aTWLWcxKrlJFYtJ7FqOYlVy0msWk5i1XISq5aTWLWcxKrlJFYtJ7FqOYlVy0msWk5i1XISq5aTWLWcxKrlJFYtJ7FqOYlJBUmsWk5iikESq5aTWLWcxKrlJFYtJ7FqOYlVy0msWk5i1XISq5aTWLWcxKrlJFYtJ7FqOYlVy0msWk5i1XISq5aTWLWcxKrlJFYtJ7FqOYlVy0msWk5i1XISq5aTWLWcxKrlJFYtJ7FqOclVy0muWk5y1XKSq5aTXLWcNHNIltiuNAVXmoIrTcGVpuBKU3ClKbjSFFxpCq40BVeagitNwZWm4EpTcKUpuNIUXGkKrjQFV5qCK03BlabgSlNwpSm40hRcaQquNAVXmoIrTcGVpuBKU3ClKbjSFFxpCq40BVeagitNwZWm4EpTcKUpuNIUXGkKrjQFV5qCK03BlabgSlNwpSm40hRcaQquNAVXmoIrTcGVpuBKU3ClKbjSFFxpCq40BVeagitNwZWm4EpTcKUpuNIUXGkKrjQFV5qCK03BlabgSlNwpSm40hRcaQquNAVXmoIrTcGVpuBKU3ClKbjSFFxpCq40BVeagitNwZWm4EpTcKUpuNIUXGkKrjQFV5qCK03RlaboSlN0pSm60hRdacq40qX2M+uasTqgGesImrGapRlrOJqxjKEZk/Gbsd6iGSssmrFuoBlLHJo5/b8ZawMMDQK9D3oXuynBbgbGIZuxLKYZy1SasSSomSsumrk2pBkLcZqxvKYZi4masbymmQsgmrnGodnMmF9mop018+M4eyqJmf3S8jfmknzMhJZ89a0hcky+/HPSbuWf5c4bjv3wbJe3ivNvWFyi3/DlwvNu97J20RA5Tn9Qb55W5gTrougs3Qirxn5lzk1aFG0qcyJUUfRXpY4VFkU7S5usdeEp1egodTxBUXRnqeMci6Jdpcbmi6J35Uuiu3RDL1i/VTd+reu5uqFXrv9JN/bT9Vzd2F81rtKN3ZelB3Spt9S5SYuiz5Q6kaYo+qRuzFQ/6gil31M6uqmw/j06QR/EQy4ntBVFr9QVw90XwP9QV8z0D92qj083DleNq/UfA/ys/vxBrqaBhe/6Ti+KXlPm+DRZiL9dNW7UjS+rxvW6Ua0aN+vGL/XB64ZeU3+T/vzn9Od3lTm2qX6PbuSX7UeDzjnTrc/r1p36xY2qcY9u/EYXP8uaTDX8Pt1oUI37daOwPL9Flzh1o141DtTH3a4aY11OlCyKBqQWa54J0KUaS3SjWzVGupqspwTEVWONNuQvOH9V0WV3qy9z7oCv2FOXnsNSL0NXg64BXQsqAV0HagRdD9oFugF0I+gm0M2gW0C3gpaCbgPdDhoHugN0J+gu0N2gXtA9oFrQvaA60H2gZaD7QX2gB0APgh4CPQx6BNQMehT0GOhx0BOgJ0FPgZ4GPQN6FvQc6HnQeNBm0AugetCVoBdBRaCXQC+D+kGvgKaCXgXlQK+BxoJeB70BGg16E/QWaBDobdAI0DugOaB3Qe+B3gd9YNNAMH+Oof45pgzPMaF4jhH8OWYtzzGgm6/1gQ4AjQRtB00BlYFOBQ0DXQiqAFWD2kEbQLNBq21qiBz/nzoSq4dba4ub/rcnOXwyEvvJSCxHYr+62zKp6U4GXvPhv6T2M1f+DT/Re9RJedZ55wn6nfnCzXcxg/a7mN/6XTMoW2v3BH/nsh3571Aa+J3pOS7/T73n/wtude22wsWf3PP/Xfd8ne48l+lb+Qx97HoxSqv+RH7FyY1WJ8WBhsgKfRPWqTfuo93ARP3ZYfojhb8ShnnfB2Km94GYdX4g5q4faHxC/YdLD5H37cv2f1tvWIm/6uqsOX0nf/vwiTHOmtOGkqa/sbj0RH0GC8lYDX5gDSbg12Bie435uSfll75GvtX0EStfP3Q4E0ub/i8eW7Oq0ZybLpeeHLp6N3e/R2mT8ebDS5vMY/leKNWfO9nuC3uxjMeLZTxeLOPxYhmPF8t4vFjG48UyHi+W8XixjMeLZTxeLOPxYhmPF8t4vFjG48UyHi+W8XixjMeLZTxeLOPxYhmPF8t4vFjG48UyHi+W8XixjMeLZTxeLOPxYhmPF8t4vFjG48UyHi+W8XixjMeLZTxeLOPxYhmPF8t4vFjG48UyHi+W8XixjMeLZTxeLOPxYhmPF8t4vFjG48UyHi+W8XixjMeLJMSLZTxeLOPxYhmPF8t4vFjG48UyHi+W8XiR5nixjMeLZTxeLOPxwhV6sYzHCy/ixTIeL/yNF8t4vFjG48UyHi+W8XixjMeLZTxeuHMvlvF44dy9WMbjhbfzYhmPF8t4vFzG4+UyHi+X8Xi5jMfLZTxeLuPxchmPF8t4vFjG48UyHi+W8XixjMeLZTxeLOPxYhmPF8t4vFjG48UyHi+W8XixjMeLZTxeLOPxmiCyxv7LwtNQOpmGktI01gqmoQIzDRWRaagGTUMdbprpgq+1H5HabxmbgfNtONKGfW2otMFtQ5UNS22YbMM4G7bYsNyGC2yYa8MmG8psOMeGWhuG2rDThmU2XG5D0IazbNhhQ7MNGRtW2HCpDQkbJtqwjw3jbRhjw3AbVtqw2YYzbZhtw+k2FNnQYcM0GybYcIkNZ9tQbsM2Cxoi6+xpGZuxymYzVtlsxiqbzVhlsxmJg6HLQa+BJoPGgLbZ1BCJNQ7k0tcndNq13n5aYD+GEvoxeNCPwYN+FCj7MUDQj0J/P4YE+lHo70cxvx8l136U6PtRlO9HUb4fhfd+FMn7USTvRyG1H0XyfhTJ+1Fk7UeRtR9F1n4UWftRCO9HIbwfpe9+FLv7UZztR3G2H+XmfpS++1Hs7kexux/FbkN/AR0JugbUCHoDdANotE0DgdO8eCPoVtBtoDtAd4HqQK+B7gf1gd7Eobl4aA+AXgU9DJqK3RRzN0+AngY9gw+W8INvgZ4FjQe9gN2UcjdX4sUyvDiQbPRjjKQfYxaGHgVdB7oe9CToKdDNoNtBd4LuBt0DehF0H+hB0EMgH+gA0IWgCtBIUDWoHbQdtAE0BTQbVAZaDToVNMymhsgGx2UXRS9zesnxRrNEeYKzoDJhh5stCDdbEG62INxsQbjZgnCzBeFmC8LNFoSbLQg3WxButphws1GO9nPO0Tb8S8ulP3IVuYr0v0/qpk0fUTfV9dJz9CufjJX8F9ZNT7GzuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByzuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByzuByyuByyuByyuByyuByzuByyuByyuByyuByzuByyuByyuByyuByyuByzuByyuByzuByzuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuByyuJzJ4jbZYxY+jFn4MGbhw5iFD2MWPoxZ+DBm4cOYhQ9jFj6MWfgwZuHDmIUPuaAPYxY+jFn4MGbhw5iFD2MWPoxZ+DBm4cOYhQ9jFj6MWfgwZuHDmIUPYxY+jFn4MGbhw5iFD2MWPoxZ+DBm4cOYhQ9jFj6MWfgwZuHDmIUPYxY+jFn4MGbhw5iFD2MWPoxZ+DBm4cOYhQ9jFj6MWfgwZuHDmIUPYxY+jFn4MGbhw5iFD2MWPoxZ+DBm4cOYhQ9jFj6MWfgwZuHDmIUPYxY+jFn4MGbhQz/GhzELH8YsfBiz8GHMwocxCx/GLHwYs/BhzMKHMQsfxix8GLPwYczChzELH8YsfBiz8HHMwscxCx/HLHwcs/BxzMLHMQsfxyx8GLPwYczChzELH8YsfBiz8GHMwocxCx/GLHwYs/BhzMKHMQsfxix8GLPwYczC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ZyiFM5TCGUrhDKVwhlI4QymcoRTOUApnKIUzlMIZSuEMpXCGUjhDKZyhFM5QCmcohTOUwhlK4QylcIZSOEMpnKEUzlAKZyiFM5TCGUvhDKVwhlI4QymcoRTOUApnKIUzlMIZSuEMpXCGUjhDKZyhFM5QCmcshTOWwhlL4YylcMZSOGMpnKEUzlAKZyiFM5TCGUrhDKVwhlI4QymcKZfCfzSqsYvg3TCk51r+uPJneeU8XOj+nZ/IEvrllfPIyvm3K38WfwEwPOjsD8KXLv8m4OXfMu79S/YbgP++sjx2iCx8frUq8m1q+aVwkbGdpdSLL9Q/f3V07CfdMxpwP+F4x/EjHMcObLz4VMbIOYtjxyteOEOxZ/RTRiv/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/div/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/div/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/dir/div/div/div/div/div/div/dir/dir/dir/dir/dir/dir/dir/dir/9nLl/53K6BC8gSF4A0PwBobgDQzBGxiCNzAEb2AI3sAQvIEheAND8AaG4A0MwRsYgjcwBG9gCN7AELyBIXgDQ/AGhuANDMEbGII3MARvYAjewBC8gSF4A0PwBobgDQzBGxiCNzAEb2AI3sAQvIEheAND8AaG4A0MwRsYgjcwBG9gCN7AELyBIXgDQ/AGhuANDMEbGII3MARvYAjewBC8gSF4A0PwBobgDQzBGxiCNzAEb2AI3sAQvIEheAND8AaG4A0MwRsYgjcwBG9gCN7AELyBIXgDQ/AGhuANDMEbGII3MARvYAjewBC8gSF4A0PwBobgDQzBGxiCNzAEb2AI3sAQvIEheAND8AaG4A0MwRsYgjcwBG9gCN7AELyBIXgDQ/AGh+ANDsEbHII3OARvcAjeUB6C/wdi6YIJ0Vha1hRUj6rQZLQQXYNq0d3oy6gNrUJ5NAktRo+gRWgANaKrUT+ahlai6WgBehA9huaiW1ESXYHWoWXou+g+tAR9C81BAboXVaDH0V3oeyiLrkIPo/vRN9AK9E20Gn0B3YBS6PPoSpRAS1EfqkY3oc+g69CN6AGUQbejOHoILUd3otnoFrQGTUWPohyahWagmegOdC36EroNPYGuRzH0FXRzVOPhscSelnWV0Wfv7qd+3E/e20+e3U/9sZ/qbj+ZdT8ZZH85DK+v/BkfXM/7L72X59Y/2bn1w6VrINykP2VCJD59ULpq30UvodfRMKqNqqflP5Luu2mdummdurn0u2mdummdummdummdummdummdummdummdummdummdurm5ummdummdummdummdummdummdummdummdummdummdummdummdummdummdummdummdummdummdummdummdummdummdummdugld3bRO3bRO3bRO3bRO3bRO3bRO3bRO3bRO3bRO3bRO3bRO3bRO3bRO3bRO3bRO3bRO3bRO3bRO3YT0blqnblqnblqnbgJ8N61TN61TNymkm9apm9apm9apm9apm9apm9apm9apm9apm9apm9apm9apm9apm9apm9apm9apm9apm9apm8TXTevUTevUTevUTevUTevUTevUTevUTevUbevUbevUbevUbevUbevUXc7Zhcqf7NmG/yB861f/R51yWDqUb95Xe3/sxx3++A85bEmHf/TCj+W4w9JhjLvCP/rJHXc4dsjh46Xr6JHK6GpUjNWoGKtRMVajYqxGxViNirEaFWM1KsZqVIzVqBirUTFWo2KsRsVYjYqxGhVjNSrGalSM1agYq1ExVqNirEbFWI2KsRoVYzUqxmpUjNWoGKtRMVajYqxGxVh+irH8FGP5KcbyU4zlpxjLTzGWn2IsP8VYfoqx/BRj+SnG8lOM5acYy08xlp9iLD/FWH6KsfwUY/kpxvJTjOWnGMtPMZafYiw/xVh+irH8FGP5KcbyU4zlpxjLTzGWn2IsP8VY5ImxchNjqSjGkk+MpaIYazwxlopiLEbFWP+Jsf4TY/0nxvpPjPWfGOs/MdZ/Yqz/xFj/ibH+E2P9J+b6T8z1n5jrPzHXf2Ku/8RcD4u5HBRjOaiserQGTUVXogXoMdSH7kDXoTloEsqiO9G0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v/ysq94fy/Es4cj9/UsfzzJ17Jb67eiv+fSXavSN6BDagZaiPWgZmo2OoKMoQMfQcVSNTqCTaCSqyK/aM3nqZ+DSz+Spn6lQP3OffodC/Y6M+p1E9TOh6GcQ1c8UoqwzvE2Vb3OWFyf64nlenMyLPS3/04ToxsrT9ORlPYU2oqdRFXoGLUXPok1oM9qChtFzaCt6Hi1E29ALqBZtRy+il9DLaAd6BS1Gr6IMeg0tQjvRLvQ6egO9id5Cb6OV6B30Liqi3eg99D7ag/aiD9CHaB+aiZah/WgJ2oA+QhXoADqIDqHDaDY6go6iYyhAx9EJVI1G0Ek0BZ1C09FpNBedQWfROXQ+qvGgeNqgeNqgeNrgdtpwdtqgfdp4Vv60X0T1aA2aiq5EC9BjqA/dga5Dc9AklEV3omlR9bT8AhOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOENBOEtBOEtBOEtBOEtBOEtBOEdHmC8JmPNxSV//Br/HrA19zGX37xeFQ9LZ+dcGEve0X4+543hAsU88PO6kIBfSvrEGU9hTaip1EV2oyq0RY0jLai59FCtA3Vou3oJbQDLUavogxahI6hnWgXeh29hd5GK9G7qIh2oz1oL/oAfYj2oZloGdqPlkQ1XtPcyiJFWQfQQXQIHY6qp+WvlS7WHaOXaLwy8qNYSz+2lq5uLTX0WqrYtVSxa6li11LFrqVuXUtNu5Yqdi1V7Frq1rXUtGst/tZSwq+lxF1LObqWwnUtBe9aSty1FqNrqYbXUtWupYpea9m61hp3rRXwWlretRTSay1411rhri3Xg58r/VhPh2PDiaUvqaJlefiL5teGwej28KPrSg8mm9BbPpj32xNKX2pFyw0Ty19l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daN22ailGOPvIjc+j6hdUWrpQ3R5mxJdWg6SR3z7q07tGlPLMGoXm1qqUcswDnL5GZ981C5IB8lCateqWjpSy0JqOUft6jUu1fjWy1kt4xhLNL41vxi7zI2lF2NZxbde9saSi7Gr3rjconYZrKUUY9fDsdRiLIEYSzHGrpPjU43y5X7xnf1BqhFmGIu/Fr2F/pFLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLapxLatxLarx6Sf2nSjwcfyX97i6g0XXzcx//unmQy+X4RdpBJhc/PRfH8Qvvj3qVHH+L1fEXxa+Ebdjd0RvjvLZ/HisOLV7cX7md6uKW6Etv5vpZZCanyExOkb7AIjM5RWZyiszkFJnJKTKTU2Qmp8hMTpGZnCIzOUVmcop0HhaZySkyk1NkJqfITE6RmZwiMzlFZnKKzOQUmckpMpNTZCanyExOkZmcIjM5RWZyiszkFJnJKTKTU2Qmp8hMTpGZnCIzOUVmcor0dRaZySkyk1NkJqfITE6RmZwiMzlFZnKKzOQUmckpMpNTZCanyExOkZmcIjM5RWZyiszkFJnJKTKTU6TftchMTpGZnCIzOUW6X4vM5BSZySnSX1tkJqfITE6RmZwiMzlFZnKKzOQUmckpMpNTZCanyExOkZmcIjM5RWZyiszkFJnJKTKTU2Qmp0hXcJGZnCIzOUVmcorM5BSZySkyk1NkJqfITE7RmZxitSn5Fm++/LeVQvt8OQ/WXua/rVbh/6XW53rqWAfrn4QNr/vbXH82KsO3xMZ6YNOVPtdbD+34Lz5Ubf/Equ3Rhf/c/h+Dqntv+f+/1B9W32+rnFnRm/yi6Bu+HL05Y/0HKjt9d8ny9yhHjp4Ke8wnmiy3nRyF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J2lSTtKknKRJOUmTcpIm5SRNykmalJM0KSdpUk7SpJykSTlJk3KSJuUkTcpJmpSTNCknaVJO0qScpEk5SZNykiblJE3KSZqUkzQpJ2lSTtKknKRJOUmTcpIm5SRNykmalJM0KSdpUk7SpJykSTlJk3KSJuUkTcpJmpSTNCknaVJO0qScpEk5SZNykiblJE3KSZqUkzQpJ2lSTtKknKRimKRJOcmplqRJOUmTcpIm5SRNykmalJM0KSdpUk7SpJykSTlJk3KSJuUkTcpJmpSTNCknaVJO0qScpEk5SZNykiblJE3KSZqUkzQpJ2lSTtKknKRJOUmTcpIm5SRNykmalJM2KSdtUk7apJy0STlpk3KyGkuT+++42RSF4eiOm/8ufLj9djLq7WTU28mot5NRbyej3k4OvZ2seTtZ83bygu3k0NvJobeTNW8na95O1rydrHk7efJ28uTtZMbbyYW3k/1uJ/vdTva7nXx3OxnSdrLf7WS/VZ2ArkFD6Gn0DNqCnkPPoxfQS+hlVEKvoFfRa2g+Wo9eR6tQHUqgN9EwGkGT0Fuh0m2nkku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0kku0mku0mku0mku0mku0mku0VnOJzxNLU8TSFLE0RSxNEUtTxNIUsTRFLE0RS1PE0hSxNEUsTRFLU8TSFLE0RSxNEUtTxNIUsTRFLE0RS1PE0hSxNEUsTRFLU8TSFLE0RSxNEUtTxNIUsTRFLE0RS1PE0hSxNEUsTRFLU8TSFLE0RSxNEUtTxNIUsTRFLE0RS1PE0hSxNEUsTRFLU8TSFLE0RSxNEUtTxNIUsTRFLE0RS1PE0hSxNEUsTRFLU8TSFLE0RSxNEUtTxNIUsTRF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qmV+lVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkXdjkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQkVZQ0VZQ0VZQ0VZQ0VZQ0VZQsSW35/7EzjZorbz/QfS51+68g2iJfnX3xI96AkLmd6LfdUf0oZ/7UxFe/pmMme3Rs/Ir3RM/dWcgtE88aCeOdtBoR4/X9AyEudMf+DvRN38ZpyL8WvMtOGNEEhiRBGYjgb1IYCESWIgExiBB8U9Q/BMU/wTlPkG5T1DSE5T0BCU9QRFPULYTlO0EhTpBoU5QqBOU3wTlN0H5TVBwExTcBCU2QYlNKK4J6miCOpqgjiaolQmqY4LqmKA6JqiOCapjgnqYoAImqHkJi0CCMpegsCUsEAkqW4LKlqCyJahsCSpbgsqWoLIlqGUJalmL/hzqgeZC50Jd0FpoJZSEDkCXQ7dBW6Dj0GroMJSDUlCJF2KxL8QuaA+0CboTugq6G7oOugY6HzoHOhM6BC3nj5jnHxGHFkLXQhugg1AMugxaCs0LqTatueHOai87q73srPays9rLzmovO6u97Kz2srPay85qLzurveys9rKz2svOai87q73srPays9rLzmovO6u97Kz2srPay85qLzurveys9rKz2svOai87q73srPays9rLzmovO6u97Kz2srPay85qLzurveys9rKz2svOai87q73srPays9rLzmovO6u97Kz2srPay85qLzurveys9rKz2svOai87q73srPays9rLzmovO6u97Kz2srPay85qLzurveys9rKz2svOai87q73srPays9rLzmovO6u97Kz2srPay85qLzurveys9rKz2svOai87q73srPays9rLzmovO6u97Kz2srPa685qrzurve6s9rqz2uvOaq87q73urPay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AOE0gHAaQDgNIJwGEE4DCKcBhNMAwmkA4TSAcBpAOA0gnAYQTgMIpwGE0wDCaQDhNIBwGkA4DSCcBhBOAwinAYTTAMNpwAyn3xrZLGHzzR9jPmzz/a269KdYjRqMFDSADRVdGn5Ol1nP/5WVvwZHAm7ljerrf329b/wB+sZqbagr9DHtH19vG3+kbeOg8Y7KbGj6ntFcOwlp0G3QKehu6E5oJVQC3Q89BNVAj0CPQqugWdAB6AnoaagHegZ6FnoOegE6B70MNUB1kA06D70ODUM3QwuhE9AW6FbodugO6B7oLmgIuhe6D3oAehB6GKqFHoMeh05DT0JPQc9DL0JnoLPQS1AZ9Ap0E/QqtAB6DcqTGt2hZD54EUpBF6By6A2oGLoEOaE3ocvQeOgKVAS9BXmht6F3oDT0Lg6MDQdmdLfa97jS8D2uJpgcS47jMb4BmgFFoQmQA1oOHYVi0EZoPlQB5UIboCBUIFXv+99GZM+cBHNx8szFiTUXL/tcvOxzzR+2OftzIz6N2fQaV+pYM3omx/AtVdngXPX9V/nciC3G1amfVk+5NbOO/IfayC/9XK74pb4i9aTNqlyfpEbL1ZX2n1KjE+r5au7/N/WgQ31pq3pwshoN4hqozORp5YAjuYpvinruMSQrKuMbwlyvcq57NPkP0RO9yon6t09VH2rxKX1wg/o55ervVhN5XsjIOyt/Sxwzn1M9VzNeHz0LUn/oZ9RXpl31cI6kQ75p6inFRri3VbpDo+mQb7p65HdDRpZR6REHvl5PwWXy/R0m398xX+tGpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpARJpgRJRO4konoSKUESKUESKUESKUESKUESKUESc0MSc0MSKUESKUESKUESKUESKUESKUESKUESKUESKUGSKUGSKUGSKUGSKUGSKUGSKUESKUESKUESKUESKUESKUESKUESKUESKUESKUESKUES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E6H50FJoO1QL+aF8KAK1QkGoHFoNRaEJUBLaBM2GpkBl0EZoHrQIWg8NQAugPGgFVCU12uk1mU8WkIVkHljvm4ZYOgX7EKdgUpmCXYmmNGgctBKaC5VAjdBiaC20FwpAuVANdBhaBR2H5kCzoANQAdQDFUHLoS7oKOSF1kHToEnQQagBOgJtg+qgdqgCKoaaIBt0DNoMDUIboJnQISgMrYF2Q83QPmgqtBCaDk2GHFAhtAWKQU5oGTQRmg8thbZDtZAfyociUCsUhMqh1VAUmgAloU3QbGgKVAZthOZBi6D10AC0AMqDVkBVUqPhcYqZW0434uHL+jl9PqQuONCrW1VVZJZjevGim3oIOgPZoFrodagBKocuQG9AxdBFKAU5oUvQZehNaDx0BTolNZri97IA6GVd0YsY2Yuyohdx0NTb+DEaf8w7eHAsH7wJSkPv4htz+beOA+t9xZgm4yg54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54ig54iw54iw54iw54iw54iw54mbJ4cq9+u1qrnGXGusjBq2PQbM+EM76HLNr3G4m8yl5mXvJZN9CRn1AV7X63Vl3jjE+m2xxbuhqt4uxPgHP+lQw69PtrM/1sj6rS31k4Wx8xFz27VvUpyz+rXqO9fFdu/RBX+aT4FZe/aPl1Meo3ZmjDm0JpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkYpqkY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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)