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
@@ -63,9 +63,10 @@ from mypyc.ir.ops import (
63
63
  LoadStatic,
64
64
  MethodCall,
65
65
  Op,
66
+ PrimitiveDescription,
67
+ PrimitiveOp,
66
68
  RaiseStandardError,
67
69
  Register,
68
- SetMem,
69
70
  Truncate,
70
71
  TupleGet,
71
72
  TupleSet,
@@ -77,10 +78,8 @@ from mypyc.ir.ops import (
77
78
  int_op_to_id,
78
79
  )
79
80
  from mypyc.ir.rtypes import (
80
- PyListObject,
81
81
  PyObject,
82
82
  PySetObject,
83
- PyVarObject,
84
83
  RArray,
85
84
  RInstance,
86
85
  RPrimitive,
@@ -126,7 +125,6 @@ from mypyc.ir.rtypes import (
126
125
  short_int_rprimitive,
127
126
  str_rprimitive,
128
127
  )
129
- from mypyc.irbuild.mapper import Mapper
130
128
  from mypyc.irbuild.util import concrete_arg_kind
131
129
  from mypyc.options import CompilerOptions
132
130
  from mypyc.primitives.bytes_ops import bytes_compare
@@ -158,14 +156,19 @@ from mypyc.primitives.int_ops import (
158
156
  int64_divide_op,
159
157
  int64_mod_op,
160
158
  int64_to_int_op,
161
- int_comparison_op_mapping,
162
159
  int_to_int32_op,
163
160
  int_to_int64_op,
164
161
  ssize_t_to_int_op,
165
162
  uint8_overflow,
166
163
  )
167
- from mypyc.primitives.list_ops import list_build_op, list_extend_op, new_list_op
168
- from mypyc.primitives.misc_ops import bool_op, fast_isinstance_op, none_object_op
164
+ from mypyc.primitives.list_ops import list_build_op, list_extend_op, list_items, new_list_op
165
+ from mypyc.primitives.misc_ops import (
166
+ bool_op,
167
+ buf_init_item,
168
+ fast_isinstance_op,
169
+ none_object_op,
170
+ var_object_size,
171
+ )
169
172
  from mypyc.primitives.registry import (
170
173
  ERR_NEG_INT,
171
174
  CFunctionDescription,
@@ -174,16 +177,8 @@ from mypyc.primitives.registry import (
174
177
  unary_ops,
175
178
  )
176
179
  from mypyc.primitives.set_ops import new_set_op
177
- from mypyc.primitives.str_ops import (
178
- str_check_if_true,
179
- str_ssize_t_size_op,
180
- unicode_compare,
181
- )
182
- from mypyc.primitives.tuple_ops import (
183
- list_tuple_op,
184
- new_tuple_op,
185
- new_tuple_with_length_op,
186
- )
180
+ from mypyc.primitives.str_ops import str_check_if_true, str_ssize_t_size_op, unicode_compare
181
+ from mypyc.primitives.tuple_ops import list_tuple_op, new_tuple_op, new_tuple_with_length_op
187
182
  from mypyc.rt_subtype import is_runtime_subtype
188
183
  from mypyc.sametype import is_same_type
189
184
  from mypyc.subtype import is_subtype
@@ -224,33 +219,12 @@ FIXED_WIDTH_INT_BINARY_OPS: Final = {
224
219
  }
225
220
 
226
221
  # Binary operations on bools that are specialized and don't just promote operands to int
227
- BOOL_BINARY_OPS: Final = {
228
- "&",
229
- "&=",
230
- "|",
231
- "|=",
232
- "^",
233
- "^=",
234
- "==",
235
- "!=",
236
- "<",
237
- "<=",
238
- ">",
239
- ">=",
240
- }
222
+ BOOL_BINARY_OPS: Final = {"&", "&=", "|", "|=", "^", "^=", "==", "!=", "<", "<=", ">", ">="}
241
223
 
242
224
 
243
225
  class LowLevelIRBuilder:
244
- def __init__(
245
- self,
246
- current_module: str,
247
- errors: Errors,
248
- mapper: Mapper,
249
- options: CompilerOptions,
250
- ) -> None:
251
- self.current_module = current_module
226
+ def __init__(self, errors: Errors | None, options: CompilerOptions) -> None:
252
227
  self.errors = errors
253
- self.mapper = mapper
254
228
  self.options = options
255
229
  self.args: list[Register] = []
256
230
  self.blocks: list[BasicBlock] = []
@@ -365,17 +339,13 @@ class LowLevelIRBuilder:
365
339
  ):
366
340
  value = src.numeric_value()
367
341
  if not check_native_int_range(target_type, value):
368
- self.error(
369
- f'Value {value} is out of range for "{target_type}"', line
370
- )
342
+ self.error(f'Value {value} is out of range for "{target_type}"', line)
371
343
  return Integer(src.value >> 1, target_type)
372
344
  elif is_int_rprimitive(src_type) and is_fixed_width_rtype(target_type):
373
345
  return self.coerce_int_to_fixed_width(src, target_type, line)
374
346
  elif is_fixed_width_rtype(src_type) and is_int_rprimitive(target_type):
375
347
  return self.coerce_fixed_width_to_int(src, line)
376
- elif is_short_int_rprimitive(src_type) and is_fixed_width_rtype(
377
- target_type
378
- ):
348
+ elif is_short_int_rprimitive(src_type) and is_fixed_width_rtype(target_type):
379
349
  return self.coerce_short_int_to_fixed_width(src, target_type, line)
380
350
  elif (
381
351
  isinstance(src_type, RPrimitive)
@@ -387,9 +357,9 @@ class LowLevelIRBuilder:
387
357
  ):
388
358
  # Equivalent types
389
359
  return src
390
- elif (
391
- is_bool_rprimitive(src_type) or is_bit_rprimitive(src_type)
392
- ) and is_tagged(target_type):
360
+ elif (is_bool_rprimitive(src_type) or is_bit_rprimitive(src_type)) and is_tagged(
361
+ target_type
362
+ ):
393
363
  shifted = self.int_op(
394
364
  bool_rprimitive, src, Integer(1, bool_rprimitive), IntOp.LEFT_SHIFT
395
365
  )
@@ -424,11 +394,7 @@ class LowLevelIRBuilder:
424
394
  values.append(v)
425
395
  return self.add(
426
396
  TupleSet(
427
- [
428
- self.coerce(v, t, line)
429
- for v, t in zip(values, target_type.types)
430
- ],
431
- line,
397
+ [self.coerce(v, t, line) for v, t in zip(values, target_type.types)], line
432
398
  )
433
399
  )
434
400
  # To go between any other unboxed types, we go through a boxed
@@ -445,9 +411,7 @@ class LowLevelIRBuilder:
445
411
  return tmp
446
412
  return src
447
413
 
448
- def coerce_int_to_fixed_width(
449
- self, src: Value, target_type: RType, line: int
450
- ) -> Value:
414
+ def coerce_int_to_fixed_width(self, src: Value, target_type: RType, line: int) -> Value:
451
415
  assert is_fixed_width_rtype(target_type), target_type
452
416
  assert isinstance(target_type, RPrimitive)
453
417
 
@@ -467,18 +431,14 @@ class LowLevelIRBuilder:
467
431
  upper_bound = 1 << (size * 8 - 1)
468
432
  if not target_type.is_signed:
469
433
  upper_bound *= 2
470
- check2 = self.add(
471
- ComparisonOp(src, Integer(upper_bound, src.type), ComparisonOp.SLT)
472
- )
434
+ check2 = self.add(ComparisonOp(src, Integer(upper_bound, src.type), ComparisonOp.SLT))
473
435
  self.add(Branch(check2, fast2, slow, Branch.BOOL))
474
436
  self.activate_block(fast2)
475
437
  if target_type.is_signed:
476
438
  lower_bound = -upper_bound
477
439
  else:
478
440
  lower_bound = 0
479
- check3 = self.add(
480
- ComparisonOp(src, Integer(lower_bound, src.type), ComparisonOp.SGE)
481
- )
441
+ check3 = self.add(ComparisonOp(src, Integer(lower_bound, src.type), ComparisonOp.SGE))
482
442
  self.add(Branch(check3, fast3, slow, Branch.BOOL))
483
443
  self.activate_block(fast3)
484
444
  tmp = self.int_op(
@@ -494,9 +454,7 @@ class LowLevelIRBuilder:
494
454
  tmp = self.add(Extend(src, target_type, signed=True))
495
455
  else:
496
456
  tmp = src
497
- tmp = self.int_op(
498
- target_type, tmp, Integer(1, target_type), IntOp.RIGHT_SHIFT, line
499
- )
457
+ tmp = self.int_op(target_type, tmp, Integer(1, target_type), IntOp.RIGHT_SHIFT, line)
500
458
 
501
459
  self.add(Assign(res, tmp))
502
460
  self.goto(end)
@@ -537,13 +495,9 @@ class LowLevelIRBuilder:
537
495
  self.activate_block(end)
538
496
  return res
539
497
 
540
- def coerce_short_int_to_fixed_width(
541
- self, src: Value, target_type: RType, line: int
542
- ) -> Value:
498
+ def coerce_short_int_to_fixed_width(self, src: Value, target_type: RType, line: int) -> Value:
543
499
  if is_int64_rprimitive(target_type):
544
- return self.int_op(
545
- target_type, src, Integer(1, target_type), IntOp.RIGHT_SHIFT, line
546
- )
500
+ return self.int_op(target_type, src, Integer(1, target_type), IntOp.RIGHT_SHIFT, line)
547
501
  # TODO: i32
548
502
  assert False, (src.type, target_type)
549
503
 
@@ -554,9 +508,7 @@ class LowLevelIRBuilder:
554
508
  or is_uint8_rprimitive(src.type)
555
509
  ):
556
510
  # Simple case -- just sign extend and shift.
557
- extended = self.add(
558
- Extend(src, c_pyssize_t_rprimitive, signed=src.type.is_signed)
559
- )
511
+ extended = self.add(Extend(src, c_pyssize_t_rprimitive, signed=src.type.is_signed))
560
512
  return self.int_op(
561
513
  int_rprimitive,
562
514
  extended,
@@ -573,15 +525,11 @@ class LowLevelIRBuilder:
573
525
 
574
526
  fast, fast2, slow, end = BasicBlock(), BasicBlock(), BasicBlock(), BasicBlock()
575
527
 
576
- c1 = self.add(
577
- ComparisonOp(src, Integer(MAX_SHORT_INT, src_type), ComparisonOp.SLE)
578
- )
528
+ c1 = self.add(ComparisonOp(src, Integer(MAX_SHORT_INT, src_type), ComparisonOp.SLE))
579
529
  self.add(Branch(c1, fast, slow, Branch.BOOL))
580
530
 
581
531
  self.activate_block(fast)
582
- c2 = self.add(
583
- ComparisonOp(src, Integer(MIN_SHORT_INT, src_type), ComparisonOp.SGE)
584
- )
532
+ c2 = self.add(ComparisonOp(src, Integer(MIN_SHORT_INT, src_type), ComparisonOp.SGE))
585
533
  self.add(Branch(c2, fast2, slow, Branch.BOOL))
586
534
 
587
535
  self.activate_block(slow)
@@ -601,9 +549,7 @@ class LowLevelIRBuilder:
601
549
  tmp = self.add(Truncate(src, c_pyssize_t_rprimitive))
602
550
  else:
603
551
  tmp = src
604
- s = self.int_op(
605
- int_rprimitive, tmp, Integer(1, tmp.type), IntOp.LEFT_SHIFT, line
606
- )
552
+ s = self.int_op(int_rprimitive, tmp, Integer(1, tmp.type), IntOp.LEFT_SHIFT, line)
607
553
  self.add(Assign(res, s))
608
554
  self.goto(end)
609
555
 
@@ -638,13 +584,7 @@ class LowLevelIRBuilder:
638
584
  # Attribute access
639
585
 
640
586
  def get_attr(
641
- self,
642
- obj: Value,
643
- attr: str,
644
- result_type: RType,
645
- line: int,
646
- *,
647
- borrow: bool = False,
587
+ self, obj: Value, attr: str, result_type: RType, line: int, *, borrow: bool = False
648
588
  ) -> Value:
649
589
  """Get a native or Python attribute of an object."""
650
590
  if (
@@ -683,9 +623,7 @@ class LowLevelIRBuilder:
683
623
 
684
624
  # isinstance() checks
685
625
 
686
- def isinstance_helper(
687
- self, obj: Value, class_irs: list[ClassIR], line: int
688
- ) -> Value:
626
+ def isinstance_helper(self, obj: Value, class_irs: list[ClassIR], line: int) -> Value:
689
627
  """Fast path for isinstance() that checks against a list of native classes."""
690
628
  if not class_irs:
691
629
  return self.false()
@@ -695,9 +633,7 @@ class LowLevelIRBuilder:
695
633
  def other() -> Value:
696
634
  return self.isinstance_native(obj, class_ir, line)
697
635
 
698
- ret = self.shortcircuit_helper(
699
- "or", bool_rprimitive, lambda: ret, other, line
700
- )
636
+ ret = self.shortcircuit_helper("or", bool_rprimitive, lambda: ret, other, line)
701
637
  return ret
702
638
 
703
639
  def get_type_of_obj(self, obj: Value, line: int) -> Value:
@@ -719,9 +655,7 @@ class LowLevelIRBuilder:
719
655
  """
720
656
  concrete = all_concrete_classes(class_ir)
721
657
  if concrete is None or len(concrete) > FAST_ISINSTANCE_MAX_SUBCLASSES + 1:
722
- return self.call_c(
723
- fast_isinstance_op, [obj, self.get_native_type(class_ir)], line
724
- )
658
+ return self.call_c(fast_isinstance_op, [obj, self.get_native_type(class_ir)], line)
725
659
  if not concrete:
726
660
  # There can't be any concrete instance that matches this.
727
661
  return self.false()
@@ -732,9 +666,7 @@ class LowLevelIRBuilder:
732
666
  def other() -> Value:
733
667
  return self.type_is_op(obj, self.get_native_type(c), line)
734
668
 
735
- ret = self.shortcircuit_helper(
736
- "or", bool_rprimitive, lambda: ret, other, line
737
- )
669
+ ret = self.shortcircuit_helper("or", bool_rprimitive, lambda: ret, other, line)
738
670
  return ret
739
671
 
740
672
  # Calls
@@ -836,9 +768,7 @@ class LowLevelIRBuilder:
836
768
  else:
837
769
  nullable = kind.is_optional()
838
770
  maybe_pos = kind.is_positional() and has_star
839
- maybe_named = kind.is_named() or (
840
- kind.is_optional() and name and has_star2
841
- )
771
+ maybe_named = kind.is_named() or (kind.is_optional() and name and has_star2)
842
772
 
843
773
  # If the argument is nullable, we need to create the
844
774
  # relevant args/kwargs objects so that we can
@@ -884,9 +814,7 @@ class LowLevelIRBuilder:
884
814
  # version! What a pain!
885
815
  if maybe_pos and maybe_named and seen_empty_reg:
886
816
  pos_block, named_block = BasicBlock(), BasicBlock()
887
- self.add(
888
- Branch(seen_empty_reg, named_block, pos_block, Branch.BOOL)
889
- )
817
+ self.add(Branch(seen_empty_reg, named_block, pos_block, Branch.BOOL))
890
818
  else:
891
819
  pos_block = named_block = BasicBlock()
892
820
  self.goto(pos_block)
@@ -905,11 +833,7 @@ class LowLevelIRBuilder:
905
833
  key = self.load_str(name)
906
834
  assert star2_result
907
835
  self.translate_special_method_call(
908
- star2_result,
909
- "__setitem__",
910
- [key, value],
911
- result_type=None,
912
- line=line,
836
+ star2_result, "__setitem__", [key, value], result_type=None, line=line
913
837
  )
914
838
  self.goto(out)
915
839
 
@@ -952,9 +876,7 @@ class LowLevelIRBuilder:
952
876
  """
953
877
  if use_vectorcall(self.options.capi_version):
954
878
  # More recent Python versions support faster vectorcalls.
955
- result = self._py_vector_call(
956
- function, arg_values, line, arg_kinds, arg_names
957
- )
879
+ result = self._py_vector_call(function, arg_values, line, arg_kinds, arg_names)
958
880
  if result is not None:
959
881
  return result
960
882
 
@@ -966,16 +888,11 @@ class LowLevelIRBuilder:
966
888
  assert arg_names is not None
967
889
 
968
890
  pos_args_tuple, kw_args_dict = self._construct_varargs(
969
- list(zip(arg_values, arg_kinds, arg_names)),
970
- line,
971
- has_star=True,
972
- has_star2=True,
891
+ list(zip(arg_values, arg_kinds, arg_names)), line, has_star=True, has_star2=True
973
892
  )
974
893
  assert pos_args_tuple and kw_args_dict
975
894
 
976
- return self.call_c(
977
- py_call_with_kwargs_op, [function, pos_args_tuple, kw_args_dict], line
978
- )
895
+ return self.call_c(py_call_with_kwargs_op, [function, pos_args_tuple, kw_args_dict], line)
979
896
 
980
897
  def _py_vector_call(
981
898
  self,
@@ -996,12 +913,8 @@ class LowLevelIRBuilder:
996
913
  ):
997
914
  if arg_values:
998
915
  # Create a C array containing all arguments as boxed values.
999
- coerced_args = [
1000
- self.coerce(arg, object_rprimitive, line) for arg in arg_values
1001
- ]
1002
- arg_ptr = self.setup_rarray(
1003
- object_rprimitive, coerced_args, object_ptr=True
1004
- )
916
+ coerced_args = [self.coerce(arg, object_rprimitive, line) for arg in arg_values]
917
+ arg_ptr = self.setup_rarray(object_rprimitive, coerced_args, object_ptr=True)
1005
918
  else:
1006
919
  arg_ptr = Integer(0, object_pointer_rprimitive)
1007
920
  num_pos = num_positional_args(arg_values, arg_kinds)
@@ -1051,15 +964,11 @@ class LowLevelIRBuilder:
1051
964
  if arg_kinds is None or all(kind == ARG_POS for kind in arg_kinds):
1052
965
  # Use legacy method call API
1053
966
  method_name_reg = self.load_str(method_name)
1054
- return self.call_c(
1055
- py_method_call_op, [obj, method_name_reg] + arg_values, line
1056
- )
967
+ return self.call_c(py_method_call_op, [obj, method_name_reg] + arg_values, line)
1057
968
  else:
1058
969
  # Use py_call since it supports keyword arguments (and vectorcalls).
1059
970
  method = self.py_get_attr(obj, method_name, line)
1060
- return self.py_call(
1061
- method, arg_values, line, arg_kinds=arg_kinds, arg_names=arg_names
1062
- )
971
+ return self.py_call(method, arg_values, line, arg_kinds=arg_kinds, arg_names=arg_names)
1063
972
 
1064
973
  def _py_vector_method_call(
1065
974
  self,
@@ -1082,9 +991,7 @@ class LowLevelIRBuilder:
1082
991
  coerced_args = [
1083
992
  self.coerce(arg, object_rprimitive, line) for arg in [obj] + arg_values
1084
993
  ]
1085
- arg_ptr = self.setup_rarray(
1086
- object_rprimitive, coerced_args, object_ptr=True
1087
- )
994
+ arg_ptr = self.setup_rarray(object_rprimitive, coerced_args, object_ptr=True)
1088
995
  num_pos = num_positional_args(arg_values, arg_kinds)
1089
996
  keywords = self._vectorcall_keywords(arg_names)
1090
997
  value = self.call_c(
@@ -1092,10 +999,7 @@ class LowLevelIRBuilder:
1092
999
  [
1093
1000
  method_name_reg,
1094
1001
  arg_ptr,
1095
- Integer(
1096
- (num_pos + 1) | PY_VECTORCALL_ARGUMENTS_OFFSET,
1097
- c_size_t_rprimitive,
1098
- ),
1002
+ Integer((num_pos + 1) | PY_VECTORCALL_ARGUMENTS_OFFSET, c_size_t_rprimitive),
1099
1003
  keywords,
1100
1004
  ],
1101
1005
  line,
@@ -1170,9 +1074,7 @@ class LowLevelIRBuilder:
1170
1074
  star_arg_entries = []
1171
1075
  for lst, arg in zip(formal_to_actual, sig_args):
1172
1076
  if arg.kind.is_star():
1173
- star_arg_entries.extend(
1174
- [(args[i], arg_kinds[i], arg_names[i]) for i in lst]
1175
- )
1077
+ star_arg_entries.extend([(args[i], arg_kinds[i], arg_names[i]) for i in lst])
1176
1078
  has_star = has_star or arg.kind == ARG_STAR
1177
1079
  has_star2 = has_star2 or arg.kind == ARG_STAR2
1178
1080
 
@@ -1240,9 +1142,7 @@ class LowLevelIRBuilder:
1240
1142
  """Generate either a native or Python method call."""
1241
1143
  # If we have *args, then fallback to Python method call.
1242
1144
  if arg_kinds is not None and any(kind.is_star() for kind in arg_kinds):
1243
- return self.py_method_call(
1244
- base, name, arg_values, base.line, arg_kinds, arg_names
1245
- )
1145
+ return self.py_method_call(base, name, arg_values, base.line, arg_kinds, arg_names)
1246
1146
 
1247
1147
  # If the base type is one of ours, do a MethodCall
1248
1148
  if (
@@ -1257,9 +1157,7 @@ class LowLevelIRBuilder:
1257
1157
  arg_kinds = [ARG_POS for _ in arg_values]
1258
1158
  arg_names = [None for _ in arg_values]
1259
1159
  else:
1260
- assert (
1261
- arg_names is not None
1262
- ), "arg_kinds present but arg_names is not"
1160
+ assert arg_names is not None, "arg_kinds present but arg_names is not"
1263
1161
 
1264
1162
  # Normalize args to positionals.
1265
1163
  assert decl.bound_sig
@@ -1275,14 +1173,7 @@ class LowLevelIRBuilder:
1275
1173
 
1276
1174
  elif isinstance(base.type, RUnion):
1277
1175
  return self.union_method_call(
1278
- base,
1279
- base.type,
1280
- name,
1281
- arg_values,
1282
- result_type,
1283
- line,
1284
- arg_kinds,
1285
- arg_names,
1176
+ base, base.type, name, arg_values, result_type, line, arg_kinds, arg_names
1286
1177
  )
1287
1178
 
1288
1179
  # Try to do a special-cased method call
@@ -1317,9 +1208,7 @@ class LowLevelIRBuilder:
1317
1208
  value, name, arg_values, return_rtype, line, arg_kinds, arg_names
1318
1209
  )
1319
1210
 
1320
- return self.decompose_union_helper(
1321
- base, obj_type, return_rtype, call_union_item, line
1322
- )
1211
+ return self.decompose_union_helper(base, obj_type, return_rtype, call_union_item, line)
1323
1212
 
1324
1213
  # Loading various values
1325
1214
 
@@ -1410,11 +1299,7 @@ class LowLevelIRBuilder:
1410
1299
  rtype = rreg.type
1411
1300
 
1412
1301
  # Special case tuple comparison here so that nested tuples can be supported
1413
- if (
1414
- isinstance(ltype, RTuple)
1415
- and isinstance(rtype, RTuple)
1416
- and op in ("==", "!=")
1417
- ):
1302
+ if isinstance(ltype, RTuple) and isinstance(rtype, RTuple) and op in ("==", "!="):
1418
1303
  return self.compare_tuples(lreg, rreg, op, line)
1419
1304
 
1420
1305
  # Special case == and != when we can resolve the method call statically
@@ -1430,19 +1315,9 @@ class LowLevelIRBuilder:
1430
1315
  # call to PyErr_Occurred()
1431
1316
  if is_str_rprimitive(ltype) and is_str_rprimitive(rtype) and op in ("==", "!="):
1432
1317
  return self.compare_strings(lreg, rreg, op, line)
1433
- if (
1434
- is_bytes_rprimitive(ltype)
1435
- and is_bytes_rprimitive(rtype)
1436
- and op in ("==", "!=")
1437
- ):
1318
+ if is_bytes_rprimitive(ltype) and is_bytes_rprimitive(rtype) and op in ("==", "!="):
1438
1319
  return self.compare_bytes(lreg, rreg, op, line)
1439
- if is_tagged(ltype) and is_tagged(rtype) and op in int_comparison_op_mapping:
1440
- return self.compare_tagged(lreg, rreg, op, line)
1441
- if (
1442
- is_bool_rprimitive(ltype)
1443
- and is_bool_rprimitive(rtype)
1444
- and op in BOOL_BINARY_OPS
1445
- ):
1320
+ if is_bool_rprimitive(ltype) and is_bool_rprimitive(rtype) and op in BOOL_BINARY_OPS:
1446
1321
  if op in ComparisonOp.signed_ops:
1447
1322
  return self.bool_comparison_op(lreg, rreg, op, line)
1448
1323
  else:
@@ -1475,9 +1350,7 @@ class LowLevelIRBuilder:
1475
1350
  if is_fixed_width_rtype(rreg.type):
1476
1351
  return self.comparison_op(lreg, rreg, op_id, line)
1477
1352
  if isinstance(rreg, Integer):
1478
- return self.comparison_op(
1479
- lreg, self.coerce(rreg, ltype, line), op_id, line
1480
- )
1353
+ return self.comparison_op(lreg, self.coerce(rreg, ltype, line), op_id, line)
1481
1354
  elif is_fixed_width_rtype(rtype):
1482
1355
  if op in FIXED_WIDTH_INT_BINARY_OPS:
1483
1356
  if op.endswith("="):
@@ -1502,28 +1375,10 @@ class LowLevelIRBuilder:
1502
1375
  lreg = self.coerce(lreg, rtype, line)
1503
1376
  op_id = ComparisonOp.signed_ops[op]
1504
1377
  if isinstance(lreg, Integer):
1505
- return self.comparison_op(
1506
- self.coerce(lreg, rtype, line), rreg, op_id, line
1507
- )
1378
+ return self.comparison_op(self.coerce(lreg, rtype, line), rreg, op_id, line)
1508
1379
  if is_fixed_width_rtype(lreg.type):
1509
1380
  return self.comparison_op(lreg, rreg, op_id, line)
1510
1381
 
1511
- # Mixed int comparisons
1512
- if op in ("==", "!="):
1513
- op_id = ComparisonOp.signed_ops[op]
1514
- if is_tagged(ltype) and is_subtype(rtype, ltype):
1515
- rreg = self.coerce(rreg, int_rprimitive, line)
1516
- return self.comparison_op(lreg, rreg, op_id, line)
1517
- if is_tagged(rtype) and is_subtype(ltype, rtype):
1518
- lreg = self.coerce(lreg, int_rprimitive, line)
1519
- return self.comparison_op(lreg, rreg, op_id, line)
1520
- elif op in op in int_comparison_op_mapping:
1521
- if is_tagged(ltype) and is_subtype(rtype, ltype):
1522
- rreg = self.coerce(rreg, short_int_rprimitive, line)
1523
- return self.compare_tagged(lreg, rreg, op, line)
1524
- if is_tagged(rtype) and is_subtype(ltype, rtype):
1525
- lreg = self.coerce(lreg, short_int_rprimitive, line)
1526
- return self.compare_tagged(lreg, rreg, op, line)
1527
1382
  if is_float_rprimitive(ltype) or is_float_rprimitive(rtype):
1528
1383
  if isinstance(lreg, Integer):
1529
1384
  lreg = Float(float(lreg.numeric_value()))
@@ -1535,9 +1390,7 @@ class LowLevelIRBuilder:
1535
1390
  rreg = self.int_to_float(rreg, line)
1536
1391
  if is_float_rprimitive(lreg.type) and is_float_rprimitive(rreg.type):
1537
1392
  if op in float_comparison_op_to_id:
1538
- return self.compare_floats(
1539
- lreg, rreg, float_comparison_op_to_id[op], line
1540
- )
1393
+ return self.compare_floats(lreg, rreg, float_comparison_op_to_id[op], line)
1541
1394
  if op.endswith("="):
1542
1395
  base_op = op[:-1]
1543
1396
  else:
@@ -1545,14 +1398,12 @@ class LowLevelIRBuilder:
1545
1398
  if base_op in float_op_to_id:
1546
1399
  return self.float_op(lreg, rreg, base_op, line)
1547
1400
 
1548
- call_c_ops_candidates = binary_ops.get(op, [])
1549
- target = self.matching_call_c(call_c_ops_candidates, [lreg, rreg], line)
1401
+ primitive_ops_candidates = binary_ops.get(op, [])
1402
+ target = self.matching_primitive_op(primitive_ops_candidates, [lreg, rreg], line)
1550
1403
  assert target, "Unsupported binary operation: %s" % op
1551
1404
  return target
1552
1405
 
1553
- def check_tagged_short_int(
1554
- self, val: Value, line: int, negated: bool = False
1555
- ) -> Value:
1406
+ def check_tagged_short_int(self, val: Value, line: int, negated: bool = False) -> Value:
1556
1407
  """Check if a tagged integer is a short integer.
1557
1408
 
1558
1409
  Return the result of the check (value of type 'bit').
@@ -1564,104 +1415,6 @@ class LowLevelIRBuilder:
1564
1415
  check = self.comparison_op(bitwise_and, zero, op, line)
1565
1416
  return check
1566
1417
 
1567
- def compare_tagged(self, lhs: Value, rhs: Value, op: str, line: int) -> Value:
1568
- """Compare two tagged integers using given operator (value context)."""
1569
- # generate fast binary logic ops on short ints
1570
- if is_short_int_rprimitive(lhs.type) and is_short_int_rprimitive(rhs.type):
1571
- return self.comparison_op(lhs, rhs, int_comparison_op_mapping[op][0], line)
1572
- op_type, c_func_desc, negate_result, swap_op = int_comparison_op_mapping[op]
1573
- result = Register(bool_rprimitive)
1574
- short_int_block, int_block, out = BasicBlock(), BasicBlock(), BasicBlock()
1575
- check_lhs = self.check_tagged_short_int(lhs, line)
1576
- if op in ("==", "!="):
1577
- check = check_lhs
1578
- else:
1579
- # for non-equality logical ops (less/greater than, etc.), need to check both sides
1580
- check_rhs = self.check_tagged_short_int(rhs, line)
1581
- check = self.int_op(bit_rprimitive, check_lhs, check_rhs, IntOp.AND, line)
1582
- self.add(Branch(check, short_int_block, int_block, Branch.BOOL))
1583
- self.activate_block(short_int_block)
1584
- eq = self.comparison_op(lhs, rhs, op_type, line)
1585
- self.add(Assign(result, eq, line))
1586
- self.goto(out)
1587
- self.activate_block(int_block)
1588
- if swap_op:
1589
- args = [rhs, lhs]
1590
- else:
1591
- args = [lhs, rhs]
1592
- call = self.call_c(c_func_desc, args, line)
1593
- if negate_result:
1594
- # TODO: introduce UnaryIntOp?
1595
- call_result = self.unary_op(call, "not", line)
1596
- else:
1597
- call_result = call
1598
- self.add(Assign(result, call_result, line))
1599
- self.goto_and_activate(out)
1600
- return result
1601
-
1602
- def compare_tagged_condition(
1603
- self,
1604
- lhs: Value,
1605
- rhs: Value,
1606
- op: str,
1607
- true: BasicBlock,
1608
- false: BasicBlock,
1609
- line: int,
1610
- ) -> None:
1611
- """Compare two tagged integers using given operator (conditional context).
1612
-
1613
- Assume lhs and rhs are tagged integers.
1614
-
1615
- Args:
1616
- lhs: Left operand
1617
- rhs: Right operand
1618
- op: Operation, one of '==', '!=', '<', '<=', '>', '<='
1619
- true: Branch target if comparison is true
1620
- false: Branch target if comparison is false
1621
- """
1622
- is_eq = op in ("==", "!=")
1623
- if (
1624
- is_short_int_rprimitive(lhs.type) and is_short_int_rprimitive(rhs.type)
1625
- ) or (
1626
- is_eq
1627
- and (is_short_int_rprimitive(lhs.type) or is_short_int_rprimitive(rhs.type))
1628
- ):
1629
- # We can skip the tag check
1630
- check = self.comparison_op(lhs, rhs, int_comparison_op_mapping[op][0], line)
1631
- self.flush_keep_alives()
1632
- self.add(Branch(check, true, false, Branch.BOOL))
1633
- return
1634
- op_type, c_func_desc, negate_result, swap_op = int_comparison_op_mapping[op]
1635
- int_block, short_int_block = BasicBlock(), BasicBlock()
1636
- check_lhs = self.check_tagged_short_int(lhs, line, negated=True)
1637
- if is_eq or is_short_int_rprimitive(rhs.type):
1638
- self.flush_keep_alives()
1639
- self.add(Branch(check_lhs, int_block, short_int_block, Branch.BOOL))
1640
- else:
1641
- # For non-equality logical ops (less/greater than, etc.), need to check both sides
1642
- rhs_block = BasicBlock()
1643
- self.add(Branch(check_lhs, int_block, rhs_block, Branch.BOOL))
1644
- self.activate_block(rhs_block)
1645
- check_rhs = self.check_tagged_short_int(rhs, line, negated=True)
1646
- self.flush_keep_alives()
1647
- self.add(Branch(check_rhs, int_block, short_int_block, Branch.BOOL))
1648
- # Arbitrary integers (slow path)
1649
- self.activate_block(int_block)
1650
- if swap_op:
1651
- args = [rhs, lhs]
1652
- else:
1653
- args = [lhs, rhs]
1654
- call = self.call_c(c_func_desc, args, line)
1655
- if negate_result:
1656
- self.add(Branch(call, false, true, Branch.BOOL))
1657
- else:
1658
- self.flush_keep_alives()
1659
- self.add(Branch(call, true, false, Branch.BOOL))
1660
- # Short integers (fast path)
1661
- self.activate_block(short_int_block)
1662
- eq = self.comparison_op(lhs, rhs, op_type, line)
1663
- self.add(Branch(eq, true, false, Branch.BOOL))
1664
-
1665
1418
  def compare_strings(self, lhs: Value, rhs: Value, op: str, line: int) -> Value:
1666
1419
  """Compare two strings"""
1667
1420
  compare_result = self.call_c(unicode_compare, [lhs, rhs], line)
@@ -1669,14 +1422,8 @@ class LowLevelIRBuilder:
1669
1422
  compare_error_check = self.add(
1670
1423
  ComparisonOp(compare_result, error_constant, ComparisonOp.EQ, line)
1671
1424
  )
1672
- exception_check, propagate, final_compare = (
1673
- BasicBlock(),
1674
- BasicBlock(),
1675
- BasicBlock(),
1676
- )
1677
- branch = Branch(
1678
- compare_error_check, exception_check, final_compare, Branch.BOOL
1679
- )
1425
+ exception_check, propagate, final_compare = BasicBlock(), BasicBlock(), BasicBlock()
1426
+ branch = Branch(compare_error_check, exception_check, final_compare, Branch.BOOL)
1680
1427
  branch.negated = False
1681
1428
  self.add(branch)
1682
1429
  self.activate_block(exception_check)
@@ -1693,16 +1440,12 @@ class LowLevelIRBuilder:
1693
1440
  self.goto(final_compare)
1694
1441
  self.activate_block(final_compare)
1695
1442
  op_type = ComparisonOp.EQ if op == "==" else ComparisonOp.NEQ
1696
- return self.add(
1697
- ComparisonOp(compare_result, Integer(0, c_int_rprimitive), op_type, line)
1698
- )
1443
+ return self.add(ComparisonOp(compare_result, Integer(0, c_int_rprimitive), op_type, line))
1699
1444
 
1700
1445
  def compare_bytes(self, lhs: Value, rhs: Value, op: str, line: int) -> Value:
1701
1446
  compare_result = self.call_c(bytes_compare, [lhs, rhs], line)
1702
1447
  op_type = ComparisonOp.EQ if op == "==" else ComparisonOp.NEQ
1703
- return self.add(
1704
- ComparisonOp(compare_result, Integer(1, c_int_rprimitive), op_type, line)
1705
- )
1448
+ return self.add(ComparisonOp(compare_result, Integer(1, c_int_rprimitive), op_type, line))
1706
1449
 
1707
1450
  def compare_tuples(self, lhs: Value, rhs: Value, op: str, line: int = -1) -> Value:
1708
1451
  """Compare two tuples item by item"""
@@ -1750,16 +1493,12 @@ class LowLevelIRBuilder:
1750
1493
  self.goto_and_activate(out)
1751
1494
  return result
1752
1495
 
1753
- def translate_instance_contains(
1754
- self, inst: Value, item: Value, op: str, line: int
1755
- ) -> Value:
1496
+ def translate_instance_contains(self, inst: Value, item: Value, op: str, line: int) -> Value:
1756
1497
  res = self.gen_method_call(inst, "__contains__", [item], None, line)
1757
1498
  if not is_bool_rprimitive(res.type):
1758
1499
  res = self.call_c(bool_op, [res], line)
1759
1500
  if op == "not in":
1760
- res = self.bool_bitwise_op(
1761
- res, Integer(1, rtype=bool_rprimitive), "^", line
1762
- )
1501
+ res = self.bool_bitwise_op(res, Integer(1, rtype=bool_rprimitive), "^", line)
1763
1502
  return res
1764
1503
 
1765
1504
  def bool_bitwise_op(self, lreg: Value, rreg: Value, op: str, line: int) -> Value:
@@ -1888,19 +1627,11 @@ class LowLevelIRBuilder:
1888
1627
  if not values:
1889
1628
  return result_list
1890
1629
  args = [self.coerce(item, object_rprimitive, line) for item in values]
1891
- ob_item_ptr = self.add(
1892
- GetElementPtr(result_list, PyListObject, "ob_item", line)
1893
- )
1894
- ob_item_base = self.add(LoadMem(pointer_rprimitive, ob_item_ptr, line))
1630
+ ob_item_base = self.add(PrimitiveOp([result_list], list_items, line))
1895
1631
  for i in range(len(values)):
1896
- if i == 0:
1897
- item_address = ob_item_base
1898
- else:
1899
- offset = Integer(PLATFORM_SIZE * i, c_pyssize_t_rprimitive, line)
1900
- item_address = self.add(
1901
- IntOp(pointer_rprimitive, ob_item_base, offset, IntOp.ADD, line)
1902
- )
1903
- self.add(SetMem(object_rprimitive, item_address, args[i], line))
1632
+ self.primitive_op(
1633
+ buf_init_item, [ob_item_base, Integer(i, c_pyssize_t_rprimitive), args[i]], line
1634
+ )
1904
1635
  self.add(KeepAlive([result_list]))
1905
1636
  return result_list
1906
1637
 
@@ -1914,9 +1645,7 @@ class LowLevelIRBuilder:
1914
1645
  array = Register(RArray(item_type, len(values)))
1915
1646
  self.add(AssignMulti(array, list(values)))
1916
1647
  return self.add(
1917
- LoadAddress(
1918
- object_pointer_rprimitive if object_ptr else c_pointer_rprimitive, array
1919
- )
1648
+ LoadAddress(object_pointer_rprimitive if object_ptr else c_pointer_rprimitive, array)
1920
1649
  )
1921
1650
 
1922
1651
  def shortcircuit_helper(
@@ -1934,9 +1663,7 @@ class LowLevelIRBuilder:
1934
1663
  # true_body is taken if the left is true, false_body if it is false.
1935
1664
  # For 'and' the value is the right side if the left is true, and for 'or'
1936
1665
  # it is the right side if the left is false.
1937
- true_body, false_body = (
1938
- (right_body, left_body) if op == "and" else (left_body, right_body)
1939
- )
1666
+ true_body, false_body = (right_body, left_body) if op == "and" else (left_body, right_body)
1940
1667
 
1941
1668
  left_value = left()
1942
1669
  self.add_bool_branch(left_value, true_body, false_body)
@@ -1982,19 +1709,13 @@ class LowLevelIRBuilder:
1982
1709
  and value.type.class_ir.has_method("__bool__")
1983
1710
  ):
1984
1711
  # Directly call the __bool__ method on classes that have it.
1985
- result = self.gen_method_call(
1986
- value, "__bool__", [], bool_rprimitive, value.line
1987
- )
1712
+ result = self.gen_method_call(value, "__bool__", [], bool_rprimitive, value.line)
1988
1713
  elif is_float_rprimitive(value.type):
1989
- result = self.compare_floats(
1990
- value, Float(0.0), FloatComparisonOp.NEQ, value.line
1991
- )
1714
+ result = self.compare_floats(value, Float(0.0), FloatComparisonOp.NEQ, value.line)
1992
1715
  else:
1993
1716
  value_type = optional_value_type(value.type)
1994
1717
  if value_type is not None:
1995
- not_none = self.translate_is_op(
1996
- value, self.none_object(), "is not", value.line
1997
- )
1718
+ not_none = self.translate_is_op(value, self.none_object(), "is not", value.line)
1998
1719
  always_truthy = False
1999
1720
  if isinstance(value_type, RInstance):
2000
1721
  # check whether X.__bool__ is always just the default (object.__bool__)
@@ -2026,18 +1747,14 @@ class LowLevelIRBuilder:
2026
1747
  result = self.call_c(bool_op, [value], value.line)
2027
1748
  return result
2028
1749
 
2029
- def add_bool_branch(
2030
- self, value: Value, true: BasicBlock, false: BasicBlock
2031
- ) -> None:
1750
+ def add_bool_branch(self, value: Value, true: BasicBlock, false: BasicBlock) -> None:
2032
1751
  opt_value_type = optional_value_type(value.type)
2033
1752
  if opt_value_type is None:
2034
1753
  bool_value = self.bool_value(value)
2035
1754
  self.add(Branch(bool_value, true, false, Branch.BOOL))
2036
1755
  else:
2037
1756
  # Special-case optional types
2038
- is_none = self.translate_is_op(
2039
- value, self.none_object(), "is not", value.line
2040
- )
1757
+ is_none = self.translate_is_op(value, self.none_object(), "is not", value.line)
2041
1758
  branch = Branch(is_none, true, false, Branch.BOOL)
2042
1759
  self.add(branch)
2043
1760
  always_truthy = False
@@ -2114,9 +1831,7 @@ class LowLevelIRBuilder:
2114
1831
  if not isinstance(arg, (Integer, LoadLiteral)):
2115
1832
  self.keep_alives.append(arg)
2116
1833
  if desc.error_kind == ERR_NEG_INT:
2117
- comp = ComparisonOp(
2118
- target, Integer(0, desc.return_type, line), ComparisonOp.SGE, line
2119
- )
1834
+ comp = ComparisonOp(target, Integer(0, desc.return_type, line), ComparisonOp.SGE, line)
2120
1835
  comp.error_kind = ERR_FALSE
2121
1836
  self.add(comp)
2122
1837
 
@@ -2131,9 +1846,7 @@ class LowLevelIRBuilder:
2131
1846
  # and so we can't just coerce it.
2132
1847
  result = self.none()
2133
1848
  else:
2134
- result = self.coerce(
2135
- target, result_type, line, can_borrow=desc.is_borrowed
2136
- )
1849
+ result = self.coerce(target, result_type, line, can_borrow=desc.is_borrowed)
2137
1850
  return result
2138
1851
 
2139
1852
  def matching_call_c(
@@ -2149,13 +1862,12 @@ class LowLevelIRBuilder:
2149
1862
  if len(desc.arg_types) != len(args):
2150
1863
  continue
2151
1864
  if all(
2152
- is_subtype(actual.type, formal)
2153
- for actual, formal in zip(args, desc.arg_types)
1865
+ is_subtype(actual.type, formal) for actual, formal in zip(args, desc.arg_types)
2154
1866
  ) and (not desc.is_borrowed or can_borrow):
2155
1867
  if matching:
2156
- assert (
2157
- matching.priority != desc.priority
2158
- ), "Ambiguous:\n1) {}\n2) {}".format(matching, desc)
1868
+ assert matching.priority != desc.priority, "Ambiguous:\n1) {}\n2) {}".format(
1869
+ matching, desc
1870
+ )
2159
1871
  if desc.priority > matching.priority:
2160
1872
  matching = desc
2161
1873
  else:
@@ -2165,9 +1877,103 @@ class LowLevelIRBuilder:
2165
1877
  return target
2166
1878
  return None
2167
1879
 
2168
- def int_op(
2169
- self, type: RType, lhs: Value, rhs: Value, op: int, line: int = -1
1880
+ def primitive_op(
1881
+ self,
1882
+ desc: PrimitiveDescription,
1883
+ args: list[Value],
1884
+ line: int,
1885
+ result_type: RType | None = None,
2170
1886
  ) -> Value:
1887
+ """Add a primitive op."""
1888
+ # Does this primitive map into calling a Python C API
1889
+ # or an internal mypyc C API function?
1890
+ if desc.c_function_name:
1891
+ # TODO: Generate PrimitiOps here and transform them into CallC
1892
+ # ops only later in the lowering pass
1893
+ c_desc = CFunctionDescription(
1894
+ desc.name,
1895
+ desc.arg_types,
1896
+ desc.return_type,
1897
+ desc.var_arg_type,
1898
+ desc.truncated_type,
1899
+ desc.c_function_name,
1900
+ desc.error_kind,
1901
+ desc.steals,
1902
+ desc.is_borrowed,
1903
+ desc.ordering,
1904
+ desc.extra_int_constants,
1905
+ desc.priority,
1906
+ )
1907
+ return self.call_c(c_desc, args, line, result_type)
1908
+
1909
+ # This primitve gets transformed in a lowering pass to
1910
+ # lower-level IR ops using a custom transform function.
1911
+
1912
+ coerced = []
1913
+ # Coerce fixed number arguments
1914
+ for i in range(min(len(args), len(desc.arg_types))):
1915
+ formal_type = desc.arg_types[i]
1916
+ arg = args[i]
1917
+ assert formal_type is not None # TODO
1918
+ arg = self.coerce(arg, formal_type, line)
1919
+ coerced.append(arg)
1920
+ assert desc.ordering is None
1921
+ assert desc.var_arg_type is None
1922
+ assert not desc.extra_int_constants
1923
+ target = self.add(PrimitiveOp(coerced, desc, line=line))
1924
+ if desc.is_borrowed:
1925
+ # If the result is borrowed, force the arguments to be
1926
+ # kept alive afterwards, as otherwise the result might be
1927
+ # immediately freed, at the risk of a dangling pointer.
1928
+ for arg in coerced:
1929
+ if not isinstance(arg, (Integer, LoadLiteral)):
1930
+ self.keep_alives.append(arg)
1931
+ if desc.error_kind == ERR_NEG_INT:
1932
+ comp = ComparisonOp(target, Integer(0, desc.return_type, line), ComparisonOp.SGE, line)
1933
+ comp.error_kind = ERR_FALSE
1934
+ self.add(comp)
1935
+
1936
+ assert desc.truncated_type is None
1937
+ result = target
1938
+ if result_type and not is_runtime_subtype(result.type, result_type):
1939
+ if is_none_rprimitive(result_type):
1940
+ # Special case None return. The actual result may actually be a bool
1941
+ # and so we can't just coerce it.
1942
+ result = self.none()
1943
+ else:
1944
+ result = self.coerce(result, result_type, line, can_borrow=desc.is_borrowed)
1945
+ return result
1946
+
1947
+ def matching_primitive_op(
1948
+ self,
1949
+ candidates: list[PrimitiveDescription],
1950
+ args: list[Value],
1951
+ line: int,
1952
+ result_type: RType | None = None,
1953
+ can_borrow: bool = False,
1954
+ ) -> Value | None:
1955
+ matching: PrimitiveDescription | None = None
1956
+ for desc in candidates:
1957
+ if len(desc.arg_types) != len(args):
1958
+ continue
1959
+ if all(
1960
+ # formal is not None and # TODO
1961
+ is_subtype(actual.type, formal)
1962
+ for actual, formal in zip(args, desc.arg_types)
1963
+ ) and (not desc.is_borrowed or can_borrow):
1964
+ if matching:
1965
+ assert matching.priority != desc.priority, "Ambiguous:\n1) {}\n2) {}".format(
1966
+ matching, desc
1967
+ )
1968
+ if desc.priority > matching.priority:
1969
+ matching = desc
1970
+ else:
1971
+ matching = desc
1972
+ if matching:
1973
+ return self.primitive_op(matching, args, line=line)
1974
+ return None
1975
+
1976
+ def int_op(self, type: RType, lhs: Value, rhs: Value, op: int, line: int = -1) -> Value:
2171
1977
  """Generate a native integer binary op.
2172
1978
 
2173
1979
  Use native/C semantics, which sometimes differ from Python
@@ -2199,11 +2005,7 @@ class LowLevelIRBuilder:
2199
2005
  msg = "float division by zero"
2200
2006
  else:
2201
2007
  msg = "float modulo"
2202
- self.add(
2203
- RaiseStandardError(
2204
- RaiseStandardError.ZERO_DIVISION_ERROR, msg, line
2205
- )
2206
- )
2008
+ self.add(RaiseStandardError(RaiseStandardError.ZERO_DIVISION_ERROR, msg, line))
2207
2009
  self.add(Unreachable())
2208
2010
  self.activate_block(ok)
2209
2011
  if op_id == FloatOp.MOD:
@@ -2217,15 +2019,8 @@ class LowLevelIRBuilder:
2217
2019
  mod = self.add(FloatOp(lhs, rhs, FloatOp.MOD, line))
2218
2020
  res = Register(float_rprimitive)
2219
2021
  self.add(Assign(res, mod))
2220
- tricky, adjust, copysign, done = (
2221
- BasicBlock(),
2222
- BasicBlock(),
2223
- BasicBlock(),
2224
- BasicBlock(),
2225
- )
2226
- is_zero = self.add(
2227
- FloatComparisonOp(res, Float(0.0), FloatComparisonOp.EQ, line)
2228
- )
2022
+ tricky, adjust, copysign, done = BasicBlock(), BasicBlock(), BasicBlock(), BasicBlock()
2023
+ is_zero = self.add(FloatComparisonOp(res, Float(0.0), FloatComparisonOp.EQ, line))
2229
2024
  self.add(Branch(is_zero, copysign, tricky, Branch.BOOL))
2230
2025
  self.activate_block(tricky)
2231
2026
  same_signs = self.is_same_float_signs(lhs, rhs, line)
@@ -2308,17 +2103,13 @@ class LowLevelIRBuilder:
2308
2103
  self.activate_block(err)
2309
2104
  self.add(
2310
2105
  RaiseStandardError(
2311
- RaiseStandardError.ZERO_DIVISION_ERROR,
2312
- "integer division or modulo by zero",
2313
- line,
2106
+ RaiseStandardError.ZERO_DIVISION_ERROR, "integer division or modulo by zero", line
2314
2107
  )
2315
2108
  )
2316
2109
  self.add(Unreachable())
2317
2110
  self.activate_block(ok)
2318
2111
 
2319
- def inline_fixed_width_divide(
2320
- self, type: RType, lhs: Value, rhs: Value, line: int
2321
- ) -> Value:
2112
+ def inline_fixed_width_divide(self, type: RType, lhs: Value, rhs: Value, line: int) -> Value:
2322
2113
  # Perform floor division (native division truncates)
2323
2114
  res = Register(type)
2324
2115
  div = self.int_op(type, lhs, rhs, IntOp.DIV, line)
@@ -2337,9 +2128,7 @@ class LowLevelIRBuilder:
2337
2128
  self.activate_block(done)
2338
2129
  return res
2339
2130
 
2340
- def inline_fixed_width_mod(
2341
- self, type: RType, lhs: Value, rhs: Value, line: int
2342
- ) -> Value:
2131
+ def inline_fixed_width_mod(self, type: RType, lhs: Value, rhs: Value, line: int) -> Value:
2343
2132
  # Perform floor modulus
2344
2133
  res = Register(type)
2345
2134
  mod = self.int_op(type, lhs, rhs, IntOp.MOD, line)
@@ -2357,9 +2146,7 @@ class LowLevelIRBuilder:
2357
2146
  self.activate_block(done)
2358
2147
  return res
2359
2148
 
2360
- def is_same_native_int_signs(
2361
- self, type: RType, a: Value, b: Value, line: int
2362
- ) -> Value:
2149
+ def is_same_native_int_signs(self, type: RType, a: Value, b: Value, line: int) -> Value:
2363
2150
  neg1 = self.add(ComparisonOp(a, Integer(0, type), ComparisonOp.SLT, line))
2364
2151
  neg2 = self.add(ComparisonOp(b, Integer(0, type), ComparisonOp.SLT, line))
2365
2152
  return self.add(ComparisonOp(neg1, neg2, ComparisonOp.EQ, line))
@@ -2380,14 +2167,8 @@ class LowLevelIRBuilder:
2380
2167
  """
2381
2168
  typ = val.type
2382
2169
  size_value = None
2383
- if (
2384
- is_list_rprimitive(typ)
2385
- or is_tuple_rprimitive(typ)
2386
- or is_bytes_rprimitive(typ)
2387
- ):
2388
- elem_address = self.add(GetElementPtr(val, PyVarObject, "ob_size"))
2389
- size_value = self.add(LoadMem(c_pyssize_t_rprimitive, elem_address))
2390
- self.add(KeepAlive([val]))
2170
+ if is_list_rprimitive(typ) or is_tuple_rprimitive(typ) or is_bytes_rprimitive(typ):
2171
+ size_value = self.primitive_op(var_object_size, [val], line)
2391
2172
  elif is_set_rprimitive(typ):
2392
2173
  elem_address = self.add(GetElementPtr(val, PySetObject, "used"))
2393
2174
  size_value = self.add(LoadMem(c_pyssize_t_rprimitive, elem_address))
@@ -2401,9 +2182,7 @@ class LowLevelIRBuilder:
2401
2182
  if use_pyssize_t:
2402
2183
  return size_value
2403
2184
  offset = Integer(1, c_pyssize_t_rprimitive, line)
2404
- return self.int_op(
2405
- short_int_rprimitive, size_value, offset, IntOp.LEFT_SHIFT, line
2406
- )
2185
+ return self.int_op(short_int_rprimitive, size_value, offset, IntOp.LEFT_SHIFT, line)
2407
2186
 
2408
2187
  if isinstance(typ, RInstance):
2409
2188
  # TODO: Support use_pyssize_t
@@ -2411,7 +2190,8 @@ class LowLevelIRBuilder:
2411
2190
  length = self.gen_method_call(val, "__len__", [], int_rprimitive, line)
2412
2191
  length = self.coerce(length, int_rprimitive, line)
2413
2192
  ok, fail = BasicBlock(), BasicBlock()
2414
- self.compare_tagged_condition(length, Integer(0), ">=", ok, fail, line)
2193
+ cond = self.binary_op(length, Integer(0), ">=", line)
2194
+ self.add_bool_branch(cond, ok, fail)
2415
2195
  self.activate_block(fail)
2416
2196
  self.add(
2417
2197
  RaiseStandardError(
@@ -2533,17 +2313,11 @@ class LowLevelIRBuilder:
2533
2313
  """
2534
2314
  call_c_ops_candidates = method_call_ops.get(name, [])
2535
2315
  call_c_op = self.matching_call_c(
2536
- call_c_ops_candidates,
2537
- [base_reg] + args,
2538
- line,
2539
- result_type,
2540
- can_borrow=can_borrow,
2316
+ call_c_ops_candidates, [base_reg] + args, line, result_type, can_borrow=can_borrow
2541
2317
  )
2542
2318
  return call_c_op
2543
2319
 
2544
- def translate_eq_cmp(
2545
- self, lreg: Value, rreg: Value, expr_op: str, line: int
2546
- ) -> Value | None:
2320
+ def translate_eq_cmp(self, lreg: Value, rreg: Value, expr_op: str, line: int) -> Value | None:
2547
2321
  """Add a equality comparison operation.
2548
2322
 
2549
2323
  Args:
@@ -2577,9 +2351,7 @@ class LowLevelIRBuilder:
2577
2351
 
2578
2352
  return self.gen_method_call(lreg, op_methods[expr_op], [rreg], ltype, line)
2579
2353
 
2580
- def translate_is_op(
2581
- self, lreg: Value, rreg: Value, expr_op: str, line: int
2582
- ) -> Value:
2354
+ def translate_is_op(self, lreg: Value, rreg: Value, expr_op: str, line: int) -> Value:
2583
2355
  """Create equality comparison operation between object identities
2584
2356
 
2585
2357
  Args:
@@ -2603,12 +2375,11 @@ class LowLevelIRBuilder:
2603
2375
  return self.call_c(dict_new_op, [], line)
2604
2376
 
2605
2377
  def error(self, msg: str, line: int) -> None:
2378
+ assert self.errors is not None, "cannot generate errors in this compiler phase"
2606
2379
  self.errors.error(msg, self.module_path, line)
2607
2380
 
2608
2381
 
2609
- def num_positional_args(
2610
- arg_values: list[Value], arg_kinds: list[ArgKind] | None
2611
- ) -> int:
2382
+ def num_positional_args(arg_values: list[Value], arg_kinds: list[ArgKind] | None) -> int:
2612
2383
  if arg_kinds is None:
2613
2384
  return len(arg_values)
2614
2385
  num_pos = 0