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,800 +1,661 @@
1
- from abc import ABC, abstractmethod
2
- import getpass
3
- import sys, os, pickle
4
- import tempfile
5
- import types
6
- import re
7
- from typing import (
8
- TypeVar,
9
- Type,
10
- List,
11
- Dict,
12
- Iterator,
13
- Callable,
14
- Union,
15
- Optional,
16
- Sequence,
17
- Tuple,
18
- Iterable,
19
- IO,
20
- Any,
21
- TYPE_CHECKING,
22
- Collection,
23
- )
24
-
25
- if TYPE_CHECKING:
26
- from .parsers.lalr_interactive_parser import InteractiveParser
27
- from .tree import ParseTree
28
- from .visitors import Transformer
29
-
30
- if sys.version_info >= (3, 8):
31
- from typing import Literal
32
- else:
33
- from typing_extensions import Literal
34
- from .parser_frontends import ParsingFrontend
35
-
36
- from .exceptions import ConfigurationError, assert_config, UnexpectedInput
37
- from .utils import Serialize, SerializeMemoizer, FS, isascii, logger
38
- from .load_grammar import (
39
- load_grammar,
40
- FromPackageLoader,
41
- Grammar,
42
- verify_used_files,
43
- PackageResource,
44
- sha256_digest,
45
- )
46
- from .tree import Tree
47
- from .common import LexerConf, ParserConf, _ParserArgType, _LexerArgType
48
-
49
- from .lexer import Lexer, BasicLexer, TerminalDef, LexerThread, Token
50
- from .parse_tree_builder import ParseTreeBuilder
51
- from .parser_frontends import (
52
- _validate_frontend_args,
53
- _get_lexer_callbacks,
54
- _deserialize_parsing_frontend,
55
- _construct_parsing_frontend,
56
- )
57
- from .grammar import Rule
58
-
59
-
60
- try:
61
- import regex
62
-
63
- _has_regex = True
64
- except ImportError:
65
- _has_regex = False
66
-
67
-
68
- ###{standalone
69
-
70
-
71
- class PostLex(ABC):
72
- @abstractmethod
73
- def process(self, stream: Iterator[Token]) -> Iterator[Token]:
74
- return stream
75
-
76
- always_accept: Iterable[str] = ()
77
-
78
-
79
- class LarkOptions(Serialize):
80
- """Specifies the options for Lark"""
81
-
82
- start: List[str]
83
- debug: bool
84
- strict: bool
85
- transformer: "Optional[Transformer]"
86
- propagate_positions: Union[bool, str]
87
- maybe_placeholders: bool
88
- cache: Union[bool, str]
89
- regex: bool
90
- g_regex_flags: int
91
- keep_all_tokens: bool
92
- tree_class: Optional[Callable[[str, List], Any]]
93
- parser: _ParserArgType
94
- lexer: _LexerArgType
95
- ambiguity: 'Literal["auto", "resolve", "explicit", "forest"]'
96
- postlex: Optional[PostLex]
97
- priority: 'Optional[Literal["auto", "normal", "invert"]]'
98
- lexer_callbacks: Dict[str, Callable[[Token], Token]]
99
- use_bytes: bool
100
- ordered_sets: bool
101
- edit_terminals: Optional[Callable[[TerminalDef], TerminalDef]]
102
- import_paths: "List[Union[str, Callable[[Union[None, str, PackageResource], str], Tuple[str, str]]]]"
103
- source_path: Optional[str]
104
-
105
- OPTIONS_DOC = r"""
106
- **=== General Options ===**
107
-
108
- start
109
- The start symbol. Either a string, or a list of strings for multiple possible starts (Default: "start")
110
- debug
111
- Display debug information and extra warnings. Use only when debugging (Default: ``False``)
112
- When used with Earley, it generates a forest graph as "sppf.png", if 'dot' is installed.
113
- strict
114
- Throw an exception on any potential ambiguity, including shift/reduce conflicts, and regex collisions.
115
- transformer
116
- Applies the transformer to every parse tree (equivalent to applying it after the parse, but faster)
117
- propagate_positions
118
- Propagates positional attributes into the 'meta' attribute of all tree branches.
119
- Sets attributes: (line, column, end_line, end_column, start_pos, end_pos,
120
- container_line, container_column, container_end_line, container_end_column)
121
- Accepts ``False``, ``True``, or a callable, which will filter which nodes to ignore when propagating.
122
- maybe_placeholders
123
- When ``True``, the ``[]`` operator returns ``None`` when not matched.
124
- When ``False``, ``[]`` behaves like the ``?`` operator, and returns no value at all.
125
- (default= ``True``)
126
- cache
127
- Cache the results of the Lark grammar analysis, for x2 to x3 faster loading. LALR only for now.
128
-
129
- - When ``False``, does nothing (default)
130
- - When ``True``, caches to a temporary file in the local directory
131
- - When given a string, caches to the path pointed by the string
132
- regex
133
- When True, uses the ``regex`` module instead of the stdlib ``re``.
134
- g_regex_flags
135
- Flags that are applied to all terminals (both regex and strings)
136
- keep_all_tokens
137
- Prevent the tree builder from automagically removing "punctuation" tokens (Default: ``False``)
138
- tree_class
139
- Lark will produce trees comprised of instances of this class instead of the default ``lark.Tree``.
140
-
141
- **=== Algorithm Options ===**
142
-
143
- parser
144
- Decides which parser engine to use. Accepts "earley" or "lalr". (Default: "earley").
145
- (there is also a "cyk" option for legacy)
146
- lexer
147
- Decides whether or not to use a lexer stage
148
-
149
- - "auto" (default): Choose for me based on the parser
150
- - "basic": Use a basic lexer
151
- - "contextual": Stronger lexer (only works with parser="lalr")
152
- - "dynamic": Flexible and powerful (only with parser="earley")
153
- - "dynamic_complete": Same as dynamic, but tries *every* variation of tokenizing possible.
154
- ambiguity
155
- Decides how to handle ambiguity in the parse. Only relevant if parser="earley"
156
-
157
- - "resolve": The parser will automatically choose the simplest derivation
158
- (it chooses consistently: greedy for tokens, non-greedy for rules)
159
- - "explicit": The parser will return all derivations wrapped in "_ambig" tree nodes (i.e. a forest).
160
- - "forest": The parser will return the root of the shared packed parse forest.
161
-
162
- **=== Misc. / Domain Specific Options ===**
163
-
164
- postlex
165
- Lexer post-processing (Default: ``None``) Only works with the basic and contextual lexers.
166
- priority
167
- How priorities should be evaluated - "auto", ``None``, "normal", "invert" (Default: "auto")
168
- lexer_callbacks
169
- Dictionary of callbacks for the lexer. May alter tokens during lexing. Use with caution.
170
- use_bytes
171
- Accept an input of type ``bytes`` instead of ``str``.
172
- ordered_sets
173
- Should Earley use ordered-sets to achieve stable output (~10% slower than regular sets. Default: True)
174
- edit_terminals
175
- A callback for editing the terminals before parse.
176
- import_paths
177
- A List of either paths or loader functions to specify from where grammars are imported
178
- source_path
179
- Override the source of from where the grammar was loaded. Useful for relative imports and unconventional grammar loading
180
- **=== End of Options ===**
181
- """
182
- if __doc__:
183
- __doc__ += OPTIONS_DOC
184
-
185
- # Adding a new option needs to be done in multiple places:
186
- # - In the dictionary below. This is the primary truth of which options `Lark.__init__` accepts
187
- # - In the docstring above. It is used both for the docstring of `LarkOptions` and `Lark`, and in readthedocs
188
- # - As an attribute of `LarkOptions` above
189
- # - Potentially in `_LOAD_ALLOWED_OPTIONS` below this class, when the option doesn't change how the grammar is loaded
190
- # - Potentially in `lark.tools.__init__`, if it makes sense, and it can easily be passed as a cmd argument
191
- _defaults: Dict[str, Any] = {
192
- "debug": False,
193
- "strict": False,
194
- "keep_all_tokens": False,
195
- "tree_class": None,
196
- "cache": False,
197
- "postlex": None,
198
- "parser": "earley",
199
- "lexer": "auto",
200
- "transformer": None,
201
- "start": "start",
202
- "priority": "auto",
203
- "ambiguity": "auto",
204
- "regex": False,
205
- "propagate_positions": False,
206
- "lexer_callbacks": {},
207
- "maybe_placeholders": True,
208
- "edit_terminals": None,
209
- "g_regex_flags": 0,
210
- "use_bytes": False,
211
- "ordered_sets": True,
212
- "import_paths": [],
213
- "source_path": None,
214
- "_plugins": {},
215
- }
216
-
217
- def __init__(self, options_dict: Dict[str, Any]) -> None:
218
- o = dict(options_dict)
219
-
220
- options = {}
221
- for name, default in self._defaults.items():
222
- if name in o:
223
- value = o.pop(name)
224
- if isinstance(default, bool) and name not in (
225
- "cache",
226
- "use_bytes",
227
- "propagate_positions",
228
- ):
229
- value = bool(value)
230
- else:
231
- value = default
232
-
233
- options[name] = value
234
-
235
- if isinstance(options["start"], str):
236
- options["start"] = [options["start"]]
237
-
238
- self.__dict__["options"] = options
239
-
240
- assert_config(self.parser, ("earley", "lalr", "cyk", None))
241
-
242
- if self.parser == "earley" and self.transformer:
243
- raise ConfigurationError(
244
- "Cannot specify an embedded transformer when using the Earley algorithm. "
245
- "Please use your transformer on the resulting parse tree, or use a different algorithm (i.e. LALR)"
246
- )
247
-
248
- if o:
249
- raise ConfigurationError("Unknown options: %s" % o.keys())
250
-
251
- def __getattr__(self, name: str) -> Any:
252
- try:
253
- return self.__dict__["options"][name]
254
- except KeyError as e:
255
- raise AttributeError(e)
256
-
257
- def __setattr__(self, name: str, value: str) -> None:
258
- assert_config(
259
- name, self.options.keys(), "%r isn't a valid option. Expected one of: %s"
260
- )
261
- self.options[name] = value
262
-
263
- def serialize(self, memo=None) -> Dict[str, Any]:
264
- return self.options
265
-
266
- @classmethod
267
- def deserialize(
268
- cls, data: Dict[str, Any], memo: Dict[int, Union[TerminalDef, Rule]]
269
- ) -> "LarkOptions":
270
- return cls(data)
271
-
272
-
273
- # Options that can be passed to the Lark parser, even when it was loaded from cache/standalone.
274
- # These options are only used outside of `load_grammar`.
275
- _LOAD_ALLOWED_OPTIONS = {
276
- "postlex",
277
- "transformer",
278
- "lexer_callbacks",
279
- "use_bytes",
280
- "debug",
281
- "g_regex_flags",
282
- "regex",
283
- "propagate_positions",
284
- "tree_class",
285
- "_plugins",
286
- }
287
-
288
- _VALID_PRIORITY_OPTIONS = ("auto", "normal", "invert", None)
289
- _VALID_AMBIGUITY_OPTIONS = ("auto", "resolve", "explicit", "forest")
290
-
291
-
292
- _T = TypeVar("_T", bound="Lark")
293
-
294
-
295
- class Lark(Serialize):
296
- """Main interface for the library.
297
-
298
- It's mostly a thin wrapper for the many different parsers, and for the tree constructor.
299
-
300
- Parameters:
301
- grammar: a string or file-object containing the grammar spec (using Lark's ebnf syntax)
302
- options: a dictionary controlling various aspects of Lark.
303
-
304
- Example:
305
- >>> Lark(r'''start: "foo" ''')
306
- Lark(...)
307
- """
308
-
309
- source_path: str
310
- source_grammar: str
311
- grammar: "Grammar"
312
- options: LarkOptions
313
- lexer: Lexer
314
- parser: "ParsingFrontend"
315
- terminals: Collection[TerminalDef]
316
-
317
- def __init__(self, grammar: "Union[Grammar, str, IO[str]]", **options) -> None:
318
- self.options = LarkOptions(options)
319
- re_module: types.ModuleType
320
-
321
- # Set regex or re module
322
- use_regex = self.options.regex
323
- if use_regex:
324
- if _has_regex:
325
- re_module = regex
326
- else:
327
- raise ImportError(
328
- "`regex` module must be installed if calling `Lark(regex=True)`."
329
- )
330
- else:
331
- re_module = re
332
-
333
- # Some, but not all file-like objects have a 'name' attribute
334
- if self.options.source_path is None:
335
- try:
336
- self.source_path = grammar.name # type: ignore[union-attr]
337
- except AttributeError:
338
- self.source_path = "<string>"
339
- else:
340
- self.source_path = self.options.source_path
341
-
342
- # Drain file-like objects to get their contents
343
- try:
344
- read = grammar.read # type: ignore[union-attr]
345
- except AttributeError:
346
- pass
347
- else:
348
- grammar = read()
349
-
350
- cache_fn = None
351
- cache_sha256 = None
352
- if isinstance(grammar, str):
353
- self.source_grammar = grammar
354
- if self.options.use_bytes:
355
- if not isascii(grammar):
356
- raise ConfigurationError(
357
- "Grammar must be ascii only, when use_bytes=True"
358
- )
359
-
360
- if self.options.cache:
361
- if self.options.parser != "lalr":
362
- raise ConfigurationError(
363
- "cache only works with parser='lalr' for now"
364
- )
365
-
366
- unhashable = (
367
- "transformer",
368
- "postlex",
369
- "lexer_callbacks",
370
- "edit_terminals",
371
- "_plugins",
372
- )
373
- options_str = "".join(
374
- k + str(v) for k, v in options.items() if k not in unhashable
375
- )
376
- from . import __version__
377
-
378
- s = grammar + options_str + __version__ + str(sys.version_info[:2])
379
- cache_sha256 = sha256_digest(s)
380
-
381
- if isinstance(self.options.cache, str):
382
- cache_fn = self.options.cache
383
- else:
384
- if self.options.cache is not True:
385
- raise ConfigurationError("cache argument must be bool or str")
386
-
387
- try:
388
- username = getpass.getuser()
389
- except Exception:
390
- # The exception raised may be ImportError or OSError in
391
- # the future. For the cache, we don't care about the
392
- # specific reason - we just want a username.
393
- username = "unknown"
394
-
395
- cache_fn = (
396
- tempfile.gettempdir()
397
- + "/.lark_cache_%s_%s_%s_%s.tmp"
398
- % (username, cache_sha256, *sys.version_info[:2])
399
- )
400
-
401
- old_options = self.options
402
- try:
403
- with FS.open(cache_fn, "rb") as f:
404
- logger.debug("Loading grammar from cache: %s", cache_fn)
405
- # Remove options that aren't relevant for loading from cache
406
- for name in set(options) - _LOAD_ALLOWED_OPTIONS:
407
- del options[name]
408
- file_sha256 = f.readline().rstrip(b"\n")
409
- cached_used_files = pickle.load(f)
410
- if file_sha256 == cache_sha256.encode(
411
- "utf8"
412
- ) and verify_used_files(cached_used_files):
413
- cached_parser_data = pickle.load(f)
414
- self._load(cached_parser_data, **options)
415
- return
416
- except FileNotFoundError:
417
- # The cache file doesn't exist; parse and compose the grammar as normal
418
- pass
419
- except (
420
- Exception
421
- ): # We should probably narrow done which errors we catch here.
422
- logger.exception(
423
- "Failed to load Lark from cache: %r. We will try to carry on.",
424
- cache_fn,
425
- )
426
-
427
- # In theory, the Lark instance might have been messed up by the call to `_load`.
428
- # In practice the only relevant thing that might have been overwritten should be `options`
429
- self.options = old_options
430
-
431
- # Parse the grammar file and compose the grammars
432
- self.grammar, used_files = load_grammar(
433
- grammar,
434
- self.source_path,
435
- self.options.import_paths,
436
- self.options.keep_all_tokens,
437
- )
438
- else:
439
- assert isinstance(grammar, Grammar)
440
- self.grammar = grammar
441
-
442
- if self.options.lexer == "auto":
443
- if self.options.parser == "lalr":
444
- self.options.lexer = "contextual"
445
- elif self.options.parser == "earley":
446
- if self.options.postlex is not None:
447
- logger.info(
448
- "postlex can't be used with the dynamic lexer, so we use 'basic' instead. "
449
- "Consider using lalr with contextual instead of earley"
450
- )
451
- self.options.lexer = "basic"
452
- else:
453
- self.options.lexer = "dynamic"
454
- elif self.options.parser == "cyk":
455
- self.options.lexer = "basic"
456
- else:
457
- assert False, self.options.parser
458
- lexer = self.options.lexer
459
- if isinstance(lexer, type):
460
- assert issubclass(
461
- lexer, Lexer
462
- ) # XXX Is this really important? Maybe just ensure interface compliance
463
- else:
464
- assert_config(lexer, ("basic", "contextual", "dynamic", "dynamic_complete"))
465
- if self.options.postlex is not None and "dynamic" in lexer:
466
- raise ConfigurationError(
467
- "Can't use postlex with a dynamic lexer. Use basic or contextual instead"
468
- )
469
-
470
- if self.options.ambiguity == "auto":
471
- if self.options.parser == "earley":
472
- self.options.ambiguity = "resolve"
473
- else:
474
- assert_config(
475
- self.options.parser,
476
- ("earley", "cyk"),
477
- "%r doesn't support disambiguation. Use one of these parsers instead: %s",
478
- )
479
-
480
- if self.options.priority == "auto":
481
- self.options.priority = "normal"
482
-
483
- if self.options.priority not in _VALID_PRIORITY_OPTIONS:
484
- raise ConfigurationError(
485
- "invalid priority option: %r. Must be one of %r"
486
- % (self.options.priority, _VALID_PRIORITY_OPTIONS)
487
- )
488
- if self.options.ambiguity not in _VALID_AMBIGUITY_OPTIONS:
489
- raise ConfigurationError(
490
- "invalid ambiguity option: %r. Must be one of %r"
491
- % (self.options.ambiguity, _VALID_AMBIGUITY_OPTIONS)
492
- )
493
-
494
- if self.options.parser is None:
495
- terminals_to_keep = "*"
496
- elif self.options.postlex is not None:
497
- terminals_to_keep = set(self.options.postlex.always_accept)
498
- else:
499
- terminals_to_keep = set()
500
-
501
- # Compile the EBNF grammar into BNF
502
- self.terminals, self.rules, self.ignore_tokens = self.grammar.compile(
503
- self.options.start, terminals_to_keep
504
- )
505
-
506
- if self.options.edit_terminals:
507
- for t in self.terminals:
508
- self.options.edit_terminals(t)
509
-
510
- self._terminals_dict = {t.name: t for t in self.terminals}
511
-
512
- # If the user asked to invert the priorities, negate them all here.
513
- if self.options.priority == "invert":
514
- for rule in self.rules:
515
- if rule.options.priority is not None:
516
- rule.options.priority = -rule.options.priority
517
- for term in self.terminals:
518
- term.priority = -term.priority
519
- # Else, if the user asked to disable priorities, strip them from the
520
- # rules and terminals. This allows the Earley parsers to skip an extra forest walk
521
- # for improved performance, if you don't need them (or didn't specify any).
522
- elif self.options.priority is None:
523
- for rule in self.rules:
524
- if rule.options.priority is not None:
525
- rule.options.priority = None
526
- for term in self.terminals:
527
- term.priority = 0
528
-
529
- # TODO Deprecate lexer_callbacks?
530
- self.lexer_conf = LexerConf(
531
- self.terminals,
532
- re_module,
533
- self.ignore_tokens,
534
- self.options.postlex,
535
- self.options.lexer_callbacks,
536
- self.options.g_regex_flags,
537
- use_bytes=self.options.use_bytes,
538
- strict=self.options.strict,
539
- )
540
-
541
- if self.options.parser:
542
- self.parser = self._build_parser()
543
- elif lexer:
544
- self.lexer = self._build_lexer()
545
-
546
- if cache_fn:
547
- logger.debug("Saving grammar to cache: %s", cache_fn)
548
- try:
549
- with FS.open(cache_fn, "wb") as f:
550
- assert cache_sha256 is not None
551
- f.write(cache_sha256.encode("utf8") + b"\n")
552
- pickle.dump(used_files, f)
553
- self.save(f, _LOAD_ALLOWED_OPTIONS)
554
- except IOError as e:
555
- logger.exception("Failed to save Lark to cache: %r.", cache_fn, e)
556
-
557
- if __doc__:
558
- __doc__ += "\n\n" + LarkOptions.OPTIONS_DOC
559
-
560
- __serialize_fields__ = "parser", "rules", "options"
561
-
562
- def _build_lexer(self, dont_ignore: bool = False) -> BasicLexer:
563
- lexer_conf = self.lexer_conf
564
- if dont_ignore:
565
- from copy import copy
566
-
567
- lexer_conf = copy(lexer_conf)
568
- lexer_conf.ignore = ()
569
- return BasicLexer(lexer_conf)
570
-
571
- def _prepare_callbacks(self) -> None:
572
- self._callbacks = {}
573
- # we don't need these callbacks if we aren't building a tree
574
- if self.options.ambiguity != "forest":
575
- self._parse_tree_builder = ParseTreeBuilder(
576
- self.rules,
577
- self.options.tree_class or Tree,
578
- self.options.propagate_positions,
579
- self.options.parser != "lalr" and self.options.ambiguity == "explicit",
580
- self.options.maybe_placeholders,
581
- )
582
- self._callbacks = self._parse_tree_builder.create_callback(
583
- self.options.transformer
584
- )
585
- self._callbacks.update(
586
- _get_lexer_callbacks(self.options.transformer, self.terminals)
587
- )
588
-
589
- def _build_parser(self) -> "ParsingFrontend":
590
- self._prepare_callbacks()
591
- _validate_frontend_args(self.options.parser, self.options.lexer)
592
- parser_conf = ParserConf(self.rules, self._callbacks, self.options.start)
593
- return _construct_parsing_frontend(
594
- self.options.parser,
595
- self.options.lexer,
596
- self.lexer_conf,
597
- parser_conf,
598
- options=self.options,
599
- )
600
-
601
- def save(self, f, exclude_options: Collection[str] = ()) -> None:
602
- """Saves the instance into the given file object
603
-
604
- Useful for caching and multiprocessing.
605
- """
606
- if self.options.parser != "lalr":
607
- raise NotImplementedError(
608
- "Lark.save() is only implemented for the LALR(1) parser."
609
- )
610
- data, m = self.memo_serialize([TerminalDef, Rule])
611
- if exclude_options:
612
- data["options"] = {
613
- n: v for n, v in data["options"].items() if n not in exclude_options
614
- }
615
- pickle.dump({"data": data, "memo": m}, f, protocol=pickle.HIGHEST_PROTOCOL)
616
-
617
- @classmethod
618
- def load(cls: Type[_T], f) -> _T:
619
- """Loads an instance from the given file object
620
-
621
- Useful for caching and multiprocessing.
622
- """
623
- inst = cls.__new__(cls)
624
- return inst._load(f)
625
-
626
- def _deserialize_lexer_conf(
627
- self,
628
- data: Dict[str, Any],
629
- memo: Dict[int, Union[TerminalDef, Rule]],
630
- options: LarkOptions,
631
- ) -> LexerConf:
632
- lexer_conf = LexerConf.deserialize(data["lexer_conf"], memo)
633
- lexer_conf.callbacks = options.lexer_callbacks or {}
634
- lexer_conf.re_module = regex if options.regex else re
635
- lexer_conf.use_bytes = options.use_bytes
636
- lexer_conf.g_regex_flags = options.g_regex_flags
637
- lexer_conf.skip_validation = True
638
- lexer_conf.postlex = options.postlex
639
- return lexer_conf
640
-
641
- def _load(self: _T, f: Any, **kwargs) -> _T:
642
- if isinstance(f, dict):
643
- d = f
644
- else:
645
- d = pickle.load(f)
646
- memo_json = d["memo"]
647
- data = d["data"]
648
-
649
- assert memo_json
650
- memo = SerializeMemoizer.deserialize(
651
- memo_json, {"Rule": Rule, "TerminalDef": TerminalDef}, {}
652
- )
653
- options = dict(data["options"])
654
- if (set(kwargs) - _LOAD_ALLOWED_OPTIONS) & set(LarkOptions._defaults):
655
- raise ConfigurationError(
656
- "Some options are not allowed when loading a Parser: {}".format(
657
- set(kwargs) - _LOAD_ALLOWED_OPTIONS
658
- )
659
- )
660
- options.update(kwargs)
661
- self.options = LarkOptions.deserialize(options, memo)
662
- self.rules = [Rule.deserialize(r, memo) for r in data["rules"]]
663
- self.source_path = "<deserialized>"
664
- _validate_frontend_args(self.options.parser, self.options.lexer)
665
- self.lexer_conf = self._deserialize_lexer_conf(
666
- data["parser"], memo, self.options
667
- )
668
- self.terminals = self.lexer_conf.terminals
669
- self._prepare_callbacks()
670
- self._terminals_dict = {t.name: t for t in self.terminals}
671
- self.parser = _deserialize_parsing_frontend(
672
- data["parser"],
673
- memo,
674
- self.lexer_conf,
675
- self._callbacks,
676
- self.options, # Not all, but multiple attributes are used
677
- )
678
- return self
679
-
680
- @classmethod
681
- def _load_from_dict(cls, data, memo, **kwargs):
682
- inst = cls.__new__(cls)
683
- return inst._load({"data": data, "memo": memo}, **kwargs)
684
-
685
- @classmethod
686
- def open(
687
- cls: Type[_T], grammar_filename: str, rel_to: Optional[str] = None, **options
688
- ) -> _T:
689
- """Create an instance of Lark with the grammar given by its filename
690
-
691
- If ``rel_to`` is provided, the function will find the grammar filename in relation to it.
692
-
693
- Example:
694
-
695
- >>> Lark.open("grammar_file.lark", rel_to=__file__, parser="lalr")
696
- Lark(...)
697
-
698
- """
699
- if rel_to:
700
- basepath = os.path.dirname(rel_to)
701
- grammar_filename = os.path.join(basepath, grammar_filename)
702
- with open(grammar_filename, encoding="utf8") as f:
703
- return cls(f, **options)
704
-
705
- @classmethod
706
- def open_from_package(
707
- cls: Type[_T],
708
- package: str,
709
- grammar_path: str,
710
- search_paths: "Sequence[str]" = [""],
711
- **options
712
- ) -> _T:
713
- """Create an instance of Lark with the grammar loaded from within the package `package`.
714
- This allows grammar loading from zipapps.
715
-
716
- Imports in the grammar will use the `package` and `search_paths` provided, through `FromPackageLoader`
717
-
718
- Example:
719
-
720
- Lark.open_from_package(__name__, "example.lark", ("grammars",), parser=...)
721
- """
722
- package_loader = FromPackageLoader(package, search_paths)
723
- full_path, text = package_loader(None, grammar_path)
724
- options.setdefault("source_path", full_path)
725
- options.setdefault("import_paths", [])
726
- options["import_paths"].append(package_loader)
727
- return cls(text, **options)
728
-
729
- def __repr__(self):
730
- return "Lark(open(%r), parser=%r, lexer=%r, ...)" % (
731
- self.source_path,
732
- self.options.parser,
733
- self.options.lexer,
734
- )
735
-
736
- def lex(self, text: str, dont_ignore: bool = False) -> Iterator[Token]:
737
- """Only lex (and postlex) the text, without parsing it. Only relevant when lexer='basic'
738
-
739
- When dont_ignore=True, the lexer will return all tokens, even those marked for %ignore.
740
-
741
- :raises UnexpectedCharacters: In case the lexer cannot find a suitable match.
742
- """
743
- lexer: Lexer
744
- if not hasattr(self, "lexer") or dont_ignore:
745
- lexer = self._build_lexer(dont_ignore)
746
- else:
747
- lexer = self.lexer
748
- lexer_thread = LexerThread.from_text(lexer, text)
749
- stream = lexer_thread.lex(None)
750
- if self.options.postlex:
751
- return self.options.postlex.process(stream)
752
- return stream
753
-
754
- def get_terminal(self, name: str) -> TerminalDef:
755
- """Get information about a terminal"""
756
- return self._terminals_dict[name]
757
-
758
- def parse_interactive(
759
- self, text: Optional[str] = None, start: Optional[str] = None
760
- ) -> "InteractiveParser":
761
- """Start an interactive parsing session.
762
-
763
- Parameters:
764
- text (str, optional): Text to be parsed. Required for ``resume_parse()``.
765
- start (str, optional): Start symbol
766
-
767
- Returns:
768
- A new InteractiveParser instance.
769
-
770
- See Also: ``Lark.parse()``
771
- """
772
- return self.parser.parse_interactive(text, start=start)
773
-
774
- def parse(
775
- self,
776
- text: str,
777
- start: Optional[str] = None,
778
- on_error: "Optional[Callable[[UnexpectedInput], bool]]" = None,
779
- ) -> "ParseTree":
780
- """Parse the given text, according to the options provided.
781
-
782
- Parameters:
783
- text (str): Text to be parsed.
784
- start (str, optional): Required if Lark was given multiple possible start symbols (using the start option).
785
- on_error (function, optional): if provided, will be called on UnexpectedToken error. Return true to resume parsing.
786
- LALR only. See examples/advanced/error_handling.py for an example of how to use on_error.
787
-
788
- Returns:
789
- If a transformer is supplied to ``__init__``, returns whatever is the
790
- result of the transformation. Otherwise, returns a Tree instance.
791
-
792
- :raises UnexpectedInput: On a parse error, one of these sub-exceptions will rise:
793
- ``UnexpectedCharacters``, ``UnexpectedToken``, or ``UnexpectedEOF``.
794
- For convenience, these sub-exceptions also inherit from ``ParserError`` and ``LexerError``.
795
-
796
- """
797
- return self.parser.parse(text, start=start, on_error=on_error)
798
-
799
-
800
- ###}
1
+ from abc import ABC, abstractmethod
2
+ import getpass
3
+ import sys, os, pickle
4
+ import tempfile
5
+ import types
6
+ import re
7
+ from typing import (
8
+ TypeVar, Type, List, Dict, Iterator, Callable, Union, Optional, Sequence,
9
+ Tuple, Iterable, IO, Any, TYPE_CHECKING, Collection
10
+ )
11
+ if TYPE_CHECKING:
12
+ from .parsers.lalr_interactive_parser import InteractiveParser
13
+ from .tree import ParseTree
14
+ from .visitors import Transformer
15
+ if sys.version_info >= (3, 8):
16
+ from typing import Literal
17
+ else:
18
+ from typing_extensions import Literal
19
+ from .parser_frontends import ParsingFrontend
20
+
21
+ from .exceptions import ConfigurationError, assert_config, UnexpectedInput
22
+ from .utils import Serialize, SerializeMemoizer, FS, isascii, logger
23
+ from .load_grammar import load_grammar, FromPackageLoader, Grammar, verify_used_files, PackageResource, sha256_digest
24
+ from .tree import Tree
25
+ from .common import LexerConf, ParserConf, _ParserArgType, _LexerArgType
26
+
27
+ from .lexer import Lexer, BasicLexer, TerminalDef, LexerThread, Token
28
+ from .parse_tree_builder import ParseTreeBuilder
29
+ from .parser_frontends import _validate_frontend_args, _get_lexer_callbacks, _deserialize_parsing_frontend, _construct_parsing_frontend
30
+ from .grammar import Rule
31
+
32
+
33
+ try:
34
+ import regex
35
+ _has_regex = True
36
+ except ImportError:
37
+ _has_regex = False
38
+
39
+
40
+ ###{standalone
41
+
42
+
43
+ class PostLex(ABC):
44
+ @abstractmethod
45
+ def process(self, stream: Iterator[Token]) -> Iterator[Token]:
46
+ return stream
47
+
48
+ always_accept: Iterable[str] = ()
49
+
50
+ class LarkOptions(Serialize):
51
+ """Specifies the options for Lark
52
+
53
+ """
54
+
55
+ start: List[str]
56
+ debug: bool
57
+ strict: bool
58
+ transformer: 'Optional[Transformer]'
59
+ propagate_positions: Union[bool, str]
60
+ maybe_placeholders: bool
61
+ cache: Union[bool, str]
62
+ regex: bool
63
+ g_regex_flags: int
64
+ keep_all_tokens: bool
65
+ tree_class: Optional[Callable[[str, List], Any]]
66
+ parser: _ParserArgType
67
+ lexer: _LexerArgType
68
+ ambiguity: 'Literal["auto", "resolve", "explicit", "forest"]'
69
+ postlex: Optional[PostLex]
70
+ priority: 'Optional[Literal["auto", "normal", "invert"]]'
71
+ lexer_callbacks: Dict[str, Callable[[Token], Token]]
72
+ use_bytes: bool
73
+ ordered_sets: bool
74
+ edit_terminals: Optional[Callable[[TerminalDef], TerminalDef]]
75
+ import_paths: 'List[Union[str, Callable[[Union[None, str, PackageResource], str], Tuple[str, str]]]]'
76
+ source_path: Optional[str]
77
+
78
+ OPTIONS_DOC = r"""
79
+ **=== General Options ===**
80
+
81
+ start
82
+ The start symbol. Either a string, or a list of strings for multiple possible starts (Default: "start")
83
+ debug
84
+ Display debug information and extra warnings. Use only when debugging (Default: ``False``)
85
+ When used with Earley, it generates a forest graph as "sppf.png", if 'dot' is installed.
86
+ strict
87
+ Throw an exception on any potential ambiguity, including shift/reduce conflicts, and regex collisions.
88
+ transformer
89
+ Applies the transformer to every parse tree (equivalent to applying it after the parse, but faster)
90
+ propagate_positions
91
+ Propagates positional attributes into the 'meta' attribute of all tree branches.
92
+ Sets attributes: (line, column, end_line, end_column, start_pos, end_pos,
93
+ container_line, container_column, container_end_line, container_end_column)
94
+ Accepts ``False``, ``True``, or a callable, which will filter which nodes to ignore when propagating.
95
+ maybe_placeholders
96
+ When ``True``, the ``[]`` operator returns ``None`` when not matched.
97
+ When ``False``, ``[]`` behaves like the ``?`` operator, and returns no value at all.
98
+ (default= ``True``)
99
+ cache
100
+ Cache the results of the Lark grammar analysis, for x2 to x3 faster loading. LALR only for now.
101
+
102
+ - When ``False``, does nothing (default)
103
+ - When ``True``, caches to a temporary file in the local directory
104
+ - When given a string, caches to the path pointed by the string
105
+ regex
106
+ When True, uses the ``regex`` module instead of the stdlib ``re``.
107
+ g_regex_flags
108
+ Flags that are applied to all terminals (both regex and strings)
109
+ keep_all_tokens
110
+ Prevent the tree builder from automagically removing "punctuation" tokens (Default: ``False``)
111
+ tree_class
112
+ Lark will produce trees comprised of instances of this class instead of the default ``lark.Tree``.
113
+
114
+ **=== Algorithm Options ===**
115
+
116
+ parser
117
+ Decides which parser engine to use. Accepts "earley" or "lalr". (Default: "earley").
118
+ (there is also a "cyk" option for legacy)
119
+ lexer
120
+ Decides whether or not to use a lexer stage
121
+
122
+ - "auto" (default): Choose for me based on the parser
123
+ - "basic": Use a basic lexer
124
+ - "contextual": Stronger lexer (only works with parser="lalr")
125
+ - "dynamic": Flexible and powerful (only with parser="earley")
126
+ - "dynamic_complete": Same as dynamic, but tries *every* variation of tokenizing possible.
127
+ ambiguity
128
+ Decides how to handle ambiguity in the parse. Only relevant if parser="earley"
129
+
130
+ - "resolve": The parser will automatically choose the simplest derivation
131
+ (it chooses consistently: greedy for tokens, non-greedy for rules)
132
+ - "explicit": The parser will return all derivations wrapped in "_ambig" tree nodes (i.e. a forest).
133
+ - "forest": The parser will return the root of the shared packed parse forest.
134
+
135
+ **=== Misc. / Domain Specific Options ===**
136
+
137
+ postlex
138
+ Lexer post-processing (Default: ``None``) Only works with the basic and contextual lexers.
139
+ priority
140
+ How priorities should be evaluated - "auto", ``None``, "normal", "invert" (Default: "auto")
141
+ lexer_callbacks
142
+ Dictionary of callbacks for the lexer. May alter tokens during lexing. Use with caution.
143
+ use_bytes
144
+ Accept an input of type ``bytes`` instead of ``str``.
145
+ ordered_sets
146
+ Should Earley use ordered-sets to achieve stable output (~10% slower than regular sets. Default: True)
147
+ edit_terminals
148
+ A callback for editing the terminals before parse.
149
+ import_paths
150
+ A List of either paths or loader functions to specify from where grammars are imported
151
+ source_path
152
+ Override the source of from where the grammar was loaded. Useful for relative imports and unconventional grammar loading
153
+ **=== End of Options ===**
154
+ """
155
+ if __doc__:
156
+ __doc__ += OPTIONS_DOC
157
+
158
+
159
+ # Adding a new option needs to be done in multiple places:
160
+ # - In the dictionary below. This is the primary truth of which options `Lark.__init__` accepts
161
+ # - In the docstring above. It is used both for the docstring of `LarkOptions` and `Lark`, and in readthedocs
162
+ # - As an attribute of `LarkOptions` above
163
+ # - Potentially in `_LOAD_ALLOWED_OPTIONS` below this class, when the option doesn't change how the grammar is loaded
164
+ # - Potentially in `lark.tools.__init__`, if it makes sense, and it can easily be passed as a cmd argument
165
+ _defaults: Dict[str, Any] = {
166
+ 'debug': False,
167
+ 'strict': False,
168
+ 'keep_all_tokens': False,
169
+ 'tree_class': None,
170
+ 'cache': False,
171
+ 'postlex': None,
172
+ 'parser': 'earley',
173
+ 'lexer': 'auto',
174
+ 'transformer': None,
175
+ 'start': 'start',
176
+ 'priority': 'auto',
177
+ 'ambiguity': 'auto',
178
+ 'regex': False,
179
+ 'propagate_positions': False,
180
+ 'lexer_callbacks': {},
181
+ 'maybe_placeholders': True,
182
+ 'edit_terminals': None,
183
+ 'g_regex_flags': 0,
184
+ 'use_bytes': False,
185
+ 'ordered_sets': True,
186
+ 'import_paths': [],
187
+ 'source_path': None,
188
+ '_plugins': {},
189
+ }
190
+
191
+ def __init__(self, options_dict: Dict[str, Any]) -> None:
192
+ o = dict(options_dict)
193
+
194
+ options = {}
195
+ for name, default in self._defaults.items():
196
+ if name in o:
197
+ value = o.pop(name)
198
+ if isinstance(default, bool) and name not in ('cache', 'use_bytes', 'propagate_positions'):
199
+ value = bool(value)
200
+ else:
201
+ value = default
202
+
203
+ options[name] = value
204
+
205
+ if isinstance(options['start'], str):
206
+ options['start'] = [options['start']]
207
+
208
+ self.__dict__['options'] = options
209
+
210
+
211
+ assert_config(self.parser, ('earley', 'lalr', 'cyk', None))
212
+
213
+ if self.parser == 'earley' and self.transformer:
214
+ raise ConfigurationError('Cannot specify an embedded transformer when using the Earley algorithm. '
215
+ 'Please use your transformer on the resulting parse tree, or use a different algorithm (i.e. LALR)')
216
+
217
+ if o:
218
+ raise ConfigurationError("Unknown options: %s" % o.keys())
219
+
220
+ def __getattr__(self, name: str) -> Any:
221
+ try:
222
+ return self.__dict__['options'][name]
223
+ except KeyError as e:
224
+ raise AttributeError(e)
225
+
226
+ def __setattr__(self, name: str, value: str) -> None:
227
+ assert_config(name, self.options.keys(), "%r isn't a valid option. Expected one of: %s")
228
+ self.options[name] = value
229
+
230
+ def serialize(self, memo = None) -> Dict[str, Any]:
231
+ return self.options
232
+
233
+ @classmethod
234
+ def deserialize(cls, data: Dict[str, Any], memo: Dict[int, Union[TerminalDef, Rule]]) -> "LarkOptions":
235
+ return cls(data)
236
+
237
+
238
+ # Options that can be passed to the Lark parser, even when it was loaded from cache/standalone.
239
+ # These options are only used outside of `load_grammar`.
240
+ _LOAD_ALLOWED_OPTIONS = {'postlex', 'transformer', 'lexer_callbacks', 'use_bytes', 'debug', 'g_regex_flags', 'regex', 'propagate_positions', 'tree_class', '_plugins'}
241
+
242
+ _VALID_PRIORITY_OPTIONS = ('auto', 'normal', 'invert', None)
243
+ _VALID_AMBIGUITY_OPTIONS = ('auto', 'resolve', 'explicit', 'forest')
244
+
245
+
246
+ _T = TypeVar('_T', bound="Lark")
247
+
248
+ class Lark(Serialize):
249
+ """Main interface for the library.
250
+
251
+ It's mostly a thin wrapper for the many different parsers, and for the tree constructor.
252
+
253
+ Parameters:
254
+ grammar: a string or file-object containing the grammar spec (using Lark's ebnf syntax)
255
+ options: a dictionary controlling various aspects of Lark.
256
+
257
+ Example:
258
+ >>> Lark(r'''start: "foo" ''')
259
+ Lark(...)
260
+ """
261
+
262
+ source_path: str
263
+ source_grammar: str
264
+ grammar: 'Grammar'
265
+ options: LarkOptions
266
+ lexer: Lexer
267
+ parser: 'ParsingFrontend'
268
+ terminals: Collection[TerminalDef]
269
+
270
+ def __init__(self, grammar: 'Union[Grammar, str, IO[str]]', **options) -> None:
271
+ self.options = LarkOptions(options)
272
+ re_module: types.ModuleType
273
+
274
+ # Set regex or re module
275
+ use_regex = self.options.regex
276
+ if use_regex:
277
+ if _has_regex:
278
+ re_module = regex
279
+ else:
280
+ raise ImportError('`regex` module must be installed if calling `Lark(regex=True)`.')
281
+ else:
282
+ re_module = re
283
+
284
+ # Some, but not all file-like objects have a 'name' attribute
285
+ if self.options.source_path is None:
286
+ try:
287
+ self.source_path = grammar.name # type: ignore[union-attr]
288
+ except AttributeError:
289
+ self.source_path = '<string>'
290
+ else:
291
+ self.source_path = self.options.source_path
292
+
293
+ # Drain file-like objects to get their contents
294
+ try:
295
+ read = grammar.read # type: ignore[union-attr]
296
+ except AttributeError:
297
+ pass
298
+ else:
299
+ grammar = read()
300
+
301
+ cache_fn = None
302
+ cache_sha256 = None
303
+ if isinstance(grammar, str):
304
+ self.source_grammar = grammar
305
+ if self.options.use_bytes:
306
+ if not isascii(grammar):
307
+ raise ConfigurationError("Grammar must be ascii only, when use_bytes=True")
308
+
309
+ if self.options.cache:
310
+ if self.options.parser != 'lalr':
311
+ raise ConfigurationError("cache only works with parser='lalr' for now")
312
+
313
+ unhashable = ('transformer', 'postlex', 'lexer_callbacks', 'edit_terminals', '_plugins')
314
+ options_str = ''.join(k+str(v) for k, v in options.items() if k not in unhashable)
315
+ from . import __version__
316
+ s = grammar + options_str + __version__ + str(sys.version_info[:2])
317
+ cache_sha256 = sha256_digest(s)
318
+
319
+ if isinstance(self.options.cache, str):
320
+ cache_fn = self.options.cache
321
+ else:
322
+ if self.options.cache is not True:
323
+ raise ConfigurationError("cache argument must be bool or str")
324
+
325
+ try:
326
+ username = getpass.getuser()
327
+ except Exception:
328
+ # The exception raised may be ImportError or OSError in
329
+ # the future. For the cache, we don't care about the
330
+ # specific reason - we just want a username.
331
+ username = "unknown"
332
+
333
+ cache_fn = tempfile.gettempdir() + "/.lark_cache_%s_%s_%s_%s.tmp" % (username, cache_sha256, *sys.version_info[:2])
334
+
335
+ old_options = self.options
336
+ try:
337
+ with FS.open(cache_fn, 'rb') as f:
338
+ logger.debug('Loading grammar from cache: %s', cache_fn)
339
+ # Remove options that aren't relevant for loading from cache
340
+ for name in (set(options) - _LOAD_ALLOWED_OPTIONS):
341
+ del options[name]
342
+ file_sha256 = f.readline().rstrip(b'\n')
343
+ cached_used_files = pickle.load(f)
344
+ if file_sha256 == cache_sha256.encode('utf8') and verify_used_files(cached_used_files):
345
+ cached_parser_data = pickle.load(f)
346
+ self._load(cached_parser_data, **options)
347
+ return
348
+ except FileNotFoundError:
349
+ # The cache file doesn't exist; parse and compose the grammar as normal
350
+ pass
351
+ except Exception: # We should probably narrow done which errors we catch here.
352
+ logger.exception("Failed to load Lark from cache: %r. We will try to carry on.", cache_fn)
353
+
354
+ # In theory, the Lark instance might have been messed up by the call to `_load`.
355
+ # In practice the only relevant thing that might have been overwritten should be `options`
356
+ self.options = old_options
357
+
358
+
359
+ # Parse the grammar file and compose the grammars
360
+ self.grammar, used_files = load_grammar(grammar, self.source_path, self.options.import_paths, self.options.keep_all_tokens)
361
+ else:
362
+ assert isinstance(grammar, Grammar)
363
+ self.grammar = grammar
364
+
365
+
366
+ if self.options.lexer == 'auto':
367
+ if self.options.parser == 'lalr':
368
+ self.options.lexer = 'contextual'
369
+ elif self.options.parser == 'earley':
370
+ if self.options.postlex is not None:
371
+ logger.info("postlex can't be used with the dynamic lexer, so we use 'basic' instead. "
372
+ "Consider using lalr with contextual instead of earley")
373
+ self.options.lexer = 'basic'
374
+ else:
375
+ self.options.lexer = 'dynamic'
376
+ elif self.options.parser == 'cyk':
377
+ self.options.lexer = 'basic'
378
+ else:
379
+ assert False, self.options.parser
380
+ lexer = self.options.lexer
381
+ if isinstance(lexer, type):
382
+ assert issubclass(lexer, Lexer) # XXX Is this really important? Maybe just ensure interface compliance
383
+ else:
384
+ assert_config(lexer, ('basic', 'contextual', 'dynamic', 'dynamic_complete'))
385
+ if self.options.postlex is not None and 'dynamic' in lexer:
386
+ raise ConfigurationError("Can't use postlex with a dynamic lexer. Use basic or contextual instead")
387
+
388
+ if self.options.ambiguity == 'auto':
389
+ if self.options.parser == 'earley':
390
+ self.options.ambiguity = 'resolve'
391
+ else:
392
+ assert_config(self.options.parser, ('earley', 'cyk'), "%r doesn't support disambiguation. Use one of these parsers instead: %s")
393
+
394
+ if self.options.priority == 'auto':
395
+ self.options.priority = 'normal'
396
+
397
+ if self.options.priority not in _VALID_PRIORITY_OPTIONS:
398
+ raise ConfigurationError("invalid priority option: %r. Must be one of %r" % (self.options.priority, _VALID_PRIORITY_OPTIONS))
399
+ if self.options.ambiguity not in _VALID_AMBIGUITY_OPTIONS:
400
+ raise ConfigurationError("invalid ambiguity option: %r. Must be one of %r" % (self.options.ambiguity, _VALID_AMBIGUITY_OPTIONS))
401
+
402
+ if self.options.parser is None:
403
+ terminals_to_keep = '*'
404
+ elif self.options.postlex is not None:
405
+ terminals_to_keep = set(self.options.postlex.always_accept)
406
+ else:
407
+ terminals_to_keep = set()
408
+
409
+ # Compile the EBNF grammar into BNF
410
+ self.terminals, self.rules, self.ignore_tokens = self.grammar.compile(self.options.start, terminals_to_keep)
411
+
412
+ if self.options.edit_terminals:
413
+ for t in self.terminals:
414
+ self.options.edit_terminals(t)
415
+
416
+ self._terminals_dict = {t.name: t for t in self.terminals}
417
+
418
+ # If the user asked to invert the priorities, negate them all here.
419
+ if self.options.priority == 'invert':
420
+ for rule in self.rules:
421
+ if rule.options.priority is not None:
422
+ rule.options.priority = -rule.options.priority
423
+ for term in self.terminals:
424
+ term.priority = -term.priority
425
+ # Else, if the user asked to disable priorities, strip them from the
426
+ # rules and terminals. This allows the Earley parsers to skip an extra forest walk
427
+ # for improved performance, if you don't need them (or didn't specify any).
428
+ elif self.options.priority is None:
429
+ for rule in self.rules:
430
+ if rule.options.priority is not None:
431
+ rule.options.priority = None
432
+ for term in self.terminals:
433
+ term.priority = 0
434
+
435
+ # TODO Deprecate lexer_callbacks?
436
+ self.lexer_conf = LexerConf(
437
+ self.terminals, re_module, self.ignore_tokens, self.options.postlex,
438
+ self.options.lexer_callbacks, self.options.g_regex_flags, use_bytes=self.options.use_bytes, strict=self.options.strict
439
+ )
440
+
441
+ if self.options.parser:
442
+ self.parser = self._build_parser()
443
+ elif lexer:
444
+ self.lexer = self._build_lexer()
445
+
446
+ if cache_fn:
447
+ logger.debug('Saving grammar to cache: %s', cache_fn)
448
+ try:
449
+ with FS.open(cache_fn, 'wb') as f:
450
+ assert cache_sha256 is not None
451
+ f.write(cache_sha256.encode('utf8') + b'\n')
452
+ pickle.dump(used_files, f)
453
+ self.save(f, _LOAD_ALLOWED_OPTIONS)
454
+ except IOError as e:
455
+ logger.exception("Failed to save Lark to cache: %r.", cache_fn, e)
456
+
457
+ if __doc__:
458
+ __doc__ += "\n\n" + LarkOptions.OPTIONS_DOC
459
+
460
+ __serialize_fields__ = 'parser', 'rules', 'options'
461
+
462
+ def _build_lexer(self, dont_ignore: bool=False) -> BasicLexer:
463
+ lexer_conf = self.lexer_conf
464
+ if dont_ignore:
465
+ from copy import copy
466
+ lexer_conf = copy(lexer_conf)
467
+ lexer_conf.ignore = ()
468
+ return BasicLexer(lexer_conf)
469
+
470
+ def _prepare_callbacks(self) -> None:
471
+ self._callbacks = {}
472
+ # we don't need these callbacks if we aren't building a tree
473
+ if self.options.ambiguity != 'forest':
474
+ self._parse_tree_builder = ParseTreeBuilder(
475
+ self.rules,
476
+ self.options.tree_class or Tree,
477
+ self.options.propagate_positions,
478
+ self.options.parser != 'lalr' and self.options.ambiguity == 'explicit',
479
+ self.options.maybe_placeholders
480
+ )
481
+ self._callbacks = self._parse_tree_builder.create_callback(self.options.transformer)
482
+ self._callbacks.update(_get_lexer_callbacks(self.options.transformer, self.terminals))
483
+
484
+ def _build_parser(self) -> "ParsingFrontend":
485
+ self._prepare_callbacks()
486
+ _validate_frontend_args(self.options.parser, self.options.lexer)
487
+ parser_conf = ParserConf(self.rules, self._callbacks, self.options.start)
488
+ return _construct_parsing_frontend(
489
+ self.options.parser,
490
+ self.options.lexer,
491
+ self.lexer_conf,
492
+ parser_conf,
493
+ options=self.options
494
+ )
495
+
496
+ def save(self, f, exclude_options: Collection[str] = ()) -> None:
497
+ """Saves the instance into the given file object
498
+
499
+ Useful for caching and multiprocessing.
500
+ """
501
+ if self.options.parser != 'lalr':
502
+ raise NotImplementedError("Lark.save() is only implemented for the LALR(1) parser.")
503
+ data, m = self.memo_serialize([TerminalDef, Rule])
504
+ if exclude_options:
505
+ data["options"] = {n: v for n, v in data["options"].items() if n not in exclude_options}
506
+ pickle.dump({'data': data, 'memo': m}, f, protocol=pickle.HIGHEST_PROTOCOL)
507
+
508
+ @classmethod
509
+ def load(cls: Type[_T], f) -> _T:
510
+ """Loads an instance from the given file object
511
+
512
+ Useful for caching and multiprocessing.
513
+ """
514
+ inst = cls.__new__(cls)
515
+ return inst._load(f)
516
+
517
+ def _deserialize_lexer_conf(self, data: Dict[str, Any], memo: Dict[int, Union[TerminalDef, Rule]], options: LarkOptions) -> LexerConf:
518
+ lexer_conf = LexerConf.deserialize(data['lexer_conf'], memo)
519
+ lexer_conf.callbacks = options.lexer_callbacks or {}
520
+ lexer_conf.re_module = regex if options.regex else re
521
+ lexer_conf.use_bytes = options.use_bytes
522
+ lexer_conf.g_regex_flags = options.g_regex_flags
523
+ lexer_conf.skip_validation = True
524
+ lexer_conf.postlex = options.postlex
525
+ return lexer_conf
526
+
527
+ def _load(self: _T, f: Any, **kwargs) -> _T:
528
+ if isinstance(f, dict):
529
+ d = f
530
+ else:
531
+ d = pickle.load(f)
532
+ memo_json = d['memo']
533
+ data = d['data']
534
+
535
+ assert memo_json
536
+ memo = SerializeMemoizer.deserialize(memo_json, {'Rule': Rule, 'TerminalDef': TerminalDef}, {})
537
+ options = dict(data['options'])
538
+ if (set(kwargs) - _LOAD_ALLOWED_OPTIONS) & set(LarkOptions._defaults):
539
+ raise ConfigurationError("Some options are not allowed when loading a Parser: {}"
540
+ .format(set(kwargs) - _LOAD_ALLOWED_OPTIONS))
541
+ options.update(kwargs)
542
+ self.options = LarkOptions.deserialize(options, memo)
543
+ self.rules = [Rule.deserialize(r, memo) for r in data['rules']]
544
+ self.source_path = '<deserialized>'
545
+ _validate_frontend_args(self.options.parser, self.options.lexer)
546
+ self.lexer_conf = self._deserialize_lexer_conf(data['parser'], memo, self.options)
547
+ self.terminals = self.lexer_conf.terminals
548
+ self._prepare_callbacks()
549
+ self._terminals_dict = {t.name: t for t in self.terminals}
550
+ self.parser = _deserialize_parsing_frontend(
551
+ data['parser'],
552
+ memo,
553
+ self.lexer_conf,
554
+ self._callbacks,
555
+ self.options, # Not all, but multiple attributes are used
556
+ )
557
+ return self
558
+
559
+ @classmethod
560
+ def _load_from_dict(cls, data, memo, **kwargs):
561
+ inst = cls.__new__(cls)
562
+ return inst._load({'data': data, 'memo': memo}, **kwargs)
563
+
564
+ @classmethod
565
+ def open(cls: Type[_T], grammar_filename: str, rel_to: Optional[str]=None, **options) -> _T:
566
+ """Create an instance of Lark with the grammar given by its filename
567
+
568
+ If ``rel_to`` is provided, the function will find the grammar filename in relation to it.
569
+
570
+ Example:
571
+
572
+ >>> Lark.open("grammar_file.lark", rel_to=__file__, parser="lalr")
573
+ Lark(...)
574
+
575
+ """
576
+ if rel_to:
577
+ basepath = os.path.dirname(rel_to)
578
+ grammar_filename = os.path.join(basepath, grammar_filename)
579
+ with open(grammar_filename, encoding='utf8') as f:
580
+ return cls(f, **options)
581
+
582
+ @classmethod
583
+ def open_from_package(cls: Type[_T], package: str, grammar_path: str, search_paths: 'Sequence[str]'=[""], **options) -> _T:
584
+ """Create an instance of Lark with the grammar loaded from within the package `package`.
585
+ This allows grammar loading from zipapps.
586
+
587
+ Imports in the grammar will use the `package` and `search_paths` provided, through `FromPackageLoader`
588
+
589
+ Example:
590
+
591
+ Lark.open_from_package(__name__, "example.lark", ("grammars",), parser=...)
592
+ """
593
+ package_loader = FromPackageLoader(package, search_paths)
594
+ full_path, text = package_loader(None, grammar_path)
595
+ options.setdefault('source_path', full_path)
596
+ options.setdefault('import_paths', [])
597
+ options['import_paths'].append(package_loader)
598
+ return cls(text, **options)
599
+
600
+ def __repr__(self):
601
+ return 'Lark(open(%r), parser=%r, lexer=%r, ...)' % (self.source_path, self.options.parser, self.options.lexer)
602
+
603
+
604
+ def lex(self, text: str, dont_ignore: bool=False) -> Iterator[Token]:
605
+ """Only lex (and postlex) the text, without parsing it. Only relevant when lexer='basic'
606
+
607
+ When dont_ignore=True, the lexer will return all tokens, even those marked for %ignore.
608
+
609
+ :raises UnexpectedCharacters: In case the lexer cannot find a suitable match.
610
+ """
611
+ lexer: Lexer
612
+ if not hasattr(self, 'lexer') or dont_ignore:
613
+ lexer = self._build_lexer(dont_ignore)
614
+ else:
615
+ lexer = self.lexer
616
+ lexer_thread = LexerThread.from_text(lexer, text)
617
+ stream = lexer_thread.lex(None)
618
+ if self.options.postlex:
619
+ return self.options.postlex.process(stream)
620
+ return stream
621
+
622
+ def get_terminal(self, name: str) -> TerminalDef:
623
+ """Get information about a terminal"""
624
+ return self._terminals_dict[name]
625
+
626
+ def parse_interactive(self, text: Optional[str]=None, start: Optional[str]=None) -> 'InteractiveParser':
627
+ """Start an interactive parsing session.
628
+
629
+ Parameters:
630
+ text (str, optional): Text to be parsed. Required for ``resume_parse()``.
631
+ start (str, optional): Start symbol
632
+
633
+ Returns:
634
+ A new InteractiveParser instance.
635
+
636
+ See Also: ``Lark.parse()``
637
+ """
638
+ return self.parser.parse_interactive(text, start=start)
639
+
640
+ def parse(self, text: str, start: Optional[str]=None, on_error: 'Optional[Callable[[UnexpectedInput], bool]]'=None) -> 'ParseTree':
641
+ """Parse the given text, according to the options provided.
642
+
643
+ Parameters:
644
+ text (str): Text to be parsed.
645
+ start (str, optional): Required if Lark was given multiple possible start symbols (using the start option).
646
+ on_error (function, optional): if provided, will be called on UnexpectedToken error. Return true to resume parsing.
647
+ LALR only. See examples/advanced/error_handling.py for an example of how to use on_error.
648
+
649
+ Returns:
650
+ If a transformer is supplied to ``__init__``, returns whatever is the
651
+ result of the transformation. Otherwise, returns a Tree instance.
652
+
653
+ :raises UnexpectedInput: On a parse error, one of these sub-exceptions will rise:
654
+ ``UnexpectedCharacters``, ``UnexpectedToken``, or ``UnexpectedEOF``.
655
+ For convenience, these sub-exceptions also inherit from ``ParserError`` and ``LexerError``.
656
+
657
+ """
658
+ return self.parser.parse(text, start=start, on_error=on_error)
659
+
660
+
661
+ ###}