jaclang 0.6.1__py3-none-any.whl → 0.7.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of jaclang might be problematic. Click here for more details.
- jaclang/__init__.py +1 -9
- jaclang/cli/.gitignore +3 -0
- jaclang/cli/cli.md +190 -0
- jaclang/cli/cli.py +25 -4
- jaclang/compiler/.gitignore +1 -0
- jaclang/compiler/__init__.py +1 -0
- jaclang/compiler/absyntree.py +9 -7
- jaclang/compiler/compile.py +4 -4
- jaclang/compiler/jac.lark +1 -0
- jaclang/compiler/parser.py +28 -6
- jaclang/compiler/passes/main/def_impl_match_pass.py +4 -0
- jaclang/compiler/passes/main/fuse_typeinfo_pass.py +10 -1
- jaclang/compiler/passes/main/import_pass.py +47 -33
- jaclang/compiler/passes/main/pyast_load_pass.py +33 -6
- jaclang/compiler/passes/main/tests/fixtures/autoimpl.impl/getme.impl.jac +3 -0
- jaclang/compiler/passes/main/tests/fixtures/autoimpl.impl.jac +3 -0
- jaclang/compiler/passes/main/tests/fixtures/autoimpl.jac +9 -0
- jaclang/compiler/passes/main/tests/fixtures/autoimpl.something.else.impl.jac +3 -0
- jaclang/compiler/passes/main/tests/fixtures/base.jac +13 -0
- jaclang/compiler/passes/main/tests/fixtures/base2.jac +14 -0
- jaclang/compiler/passes/main/tests/fixtures/blip.jac +2 -0
- jaclang/compiler/passes/main/tests/fixtures/codegentext.jac +31 -0
- jaclang/compiler/passes/main/tests/fixtures/decls.jac +10 -0
- jaclang/compiler/passes/main/tests/fixtures/defs_and_uses.jac +44 -0
- jaclang/compiler/passes/main/tests/fixtures/fstrings.jac +4 -0
- jaclang/compiler/passes/main/tests/fixtures/func.jac +18 -0
- jaclang/compiler/passes/main/tests/fixtures/func2.jac +8 -0
- jaclang/compiler/passes/main/tests/fixtures/game1.jac +15 -0
- jaclang/compiler/passes/main/tests/fixtures/impl/defs1.jac +8 -0
- jaclang/compiler/passes/main/tests/fixtures/impl/defs2.jac +8 -0
- jaclang/compiler/passes/main/tests/fixtures/impl/imps.jac +11 -0
- jaclang/compiler/passes/main/tests/fixtures/multi_def_err.jac +7 -0
- jaclang/compiler/passes/main/tests/fixtures/registry.jac +36 -0
- jaclang/compiler/passes/main/tests/fixtures/type_info.jac +31 -0
- jaclang/compiler/passes/main/tests/test_type_check_pass.py +15 -0
- jaclang/compiler/passes/tool/jac_formatter_pass.py +2 -2
- jaclang/compiler/passes/tool/tests/fixtures/corelib.jac +480 -0
- jaclang/compiler/passes/tool/tests/fixtures/corelib_fmt.jac +480 -0
- jaclang/compiler/passes/tool/tests/fixtures/genai/essay_review.jac +36 -0
- jaclang/compiler/passes/tool/tests/fixtures/genai/expert_answer.jac +17 -0
- jaclang/compiler/passes/tool/tests/fixtures/genai/joke_gen.jac +32 -0
- jaclang/compiler/passes/tool/tests/fixtures/genai/odd_word_out.jac +27 -0
- jaclang/compiler/passes/tool/tests/fixtures/genai/personality_finder.jac +35 -0
- jaclang/compiler/passes/tool/tests/fixtures/genai/text_to_type.jac +25 -0
- jaclang/compiler/passes/tool/tests/fixtures/genai/translator.jac +13 -0
- jaclang/compiler/passes/tool/tests/fixtures/genai/wikipedia.jac +63 -0
- jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.dot +39 -0
- jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.jac +7 -0
- jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.txt +20 -0
- jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/ability_impl_long_comprehension.jac +15 -0
- jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/call_with_many_parameters.jac +24 -0
- jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/entry_main.jac +4 -0
- jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/long_line_nested_dict_access.jac +10 -0
- jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/multiline_fstrings.jac +16 -0
- jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/nested_dict.jac +15 -0
- jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/nested_loop_and_incrementer.jac +13 -0
- jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/simple_walker.jac +25 -0
- jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/try_block_and_walker_spawn_and_fstrings.jac +26 -0
- jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/tuple_iteration_and_not_negation.jac +20 -0
- jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/type_annotation.jac +3 -0
- jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/walker_decl_only.jac +12 -0
- jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/walker_with_default_values_types_and_docstrings.jac +18 -0
- jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/walker_with_inline_ability_impl.jac +8 -0
- jaclang/compiler/passes/tool/tests/fixtures/simple_walk.jac +47 -0
- jaclang/compiler/passes/tool/tests/fixtures/simple_walk_fmt.jac +47 -0
- jaclang/compiler/passes/transform.py +13 -4
- jaclang/compiler/passes/utils/mypy_ast_build.py +8 -0
- jaclang/compiler/tests/fixtures/fam.jac +67 -0
- jaclang/compiler/tests/fixtures/hello_world.jac +5 -0
- jaclang/compiler/tests/fixtures/kwesc.jac +5 -0
- jaclang/compiler/tests/fixtures/mod_doc_test.jac +3 -0
- jaclang/compiler/tests/fixtures/staticcheck.jac +20 -0
- jaclang/compiler/tests/fixtures/stuff.jac +6 -0
- jaclang/langserve/__init__.py +1 -0
- jaclang/langserve/engine.py +287 -0
- jaclang/langserve/server.py +139 -0
- jaclang/langserve/tests/__init__.py +1 -0
- jaclang/langserve/tests/defaults.py +226 -0
- jaclang/langserve/tests/fixtures/hello.jac +1 -0
- jaclang/langserve/tests/pylsp_jsonrpc/__init__.py +2 -0
- jaclang/langserve/tests/pylsp_jsonrpc/dispatchers.py +37 -0
- jaclang/langserve/tests/pylsp_jsonrpc/endpoint.py +294 -0
- jaclang/langserve/tests/pylsp_jsonrpc/exceptions.py +114 -0
- jaclang/langserve/tests/pylsp_jsonrpc/streams.py +113 -0
- jaclang/langserve/tests/session.py +255 -0
- jaclang/langserve/tests/test_server.py +36 -0
- jaclang/langserve/utils.py +55 -0
- jaclang/plugin/default.py +1 -1
- jaclang/plugin/tests/fixtures/impl_match.jac +9 -0
- jaclang/plugin/tests/fixtures/impl_match_impl.jac +3 -0
- jaclang/plugin/tests/fixtures/simple_node_connection.jac +55 -0
- jaclang/plugin/tests/fixtures/simple_persistent.jac +41 -0
- jaclang/settings.py +5 -0
- jaclang/tests/fixtures/abc.jac +73 -0
- jaclang/tests/fixtures/access_checker.jac +19 -0
- jaclang/tests/fixtures/access_modifier.jac +49 -0
- jaclang/tests/fixtures/aott_raise.jac +25 -0
- jaclang/tests/fixtures/arithmetic_bug.jac +13 -0
- jaclang/tests/fixtures/assign_compr.jac +15 -0
- jaclang/tests/fixtures/assign_compr_dup.jac +15 -0
- jaclang/tests/fixtures/builtin_dotgen.jac +41 -0
- jaclang/tests/fixtures/chandra_bugs.jac +11 -0
- jaclang/tests/fixtures/chandra_bugs2.jac +26 -0
- jaclang/tests/fixtures/circle_pysolo.py +91 -0
- jaclang/tests/fixtures/deep/deeper/deep_outer_import.jac +9 -0
- jaclang/tests/fixtures/deep/deeper/deep_outer_import2.jac +9 -0
- jaclang/tests/fixtures/deep/deeper/snd_lev.jac +6 -0
- jaclang/tests/fixtures/deep/mycode.jac +4 -0
- jaclang/tests/fixtures/deep/one_lev.jac +6 -0
- jaclang/tests/fixtures/deep/one_lev_dup.jac +6 -0
- jaclang/tests/fixtures/deep/one_lev_dup_py.py +6 -0
- jaclang/tests/fixtures/deep_convert.jac +5 -0
- jaclang/tests/fixtures/deep_convo.py +6 -0
- jaclang/tests/fixtures/deep_import.jac +7 -0
- jaclang/tests/fixtures/deferred_field.jac +13 -0
- jaclang/tests/fixtures/disconn.jac +29 -0
- jaclang/tests/fixtures/edge_node_walk.jac +46 -0
- jaclang/tests/fixtures/edge_ops.jac +45 -0
- jaclang/tests/fixtures/edges_walk.jac +38 -0
- jaclang/tests/fixtures/enum_inside_archtype.jac +20 -0
- jaclang/tests/fixtures/err.jac +5 -0
- jaclang/tests/fixtures/err2.jac +5 -0
- jaclang/tests/fixtures/game1.jac +15 -0
- jaclang/tests/fixtures/gendot_bubble_sort.jac +77 -0
- jaclang/tests/fixtures/guess_game.jac +47 -0
- jaclang/tests/fixtures/has_goodness.jac +15 -0
- jaclang/tests/fixtures/hashcheck.jac +12 -0
- jaclang/tests/fixtures/hashcheck_dup.jac +12 -0
- jaclang/tests/fixtures/hello.jac +5 -0
- jaclang/tests/fixtures/hello_nc.jac +5 -0
- jaclang/tests/fixtures/ignore.jac +43 -0
- jaclang/tests/fixtures/ignore_dup.jac +43 -0
- jaclang/tests/fixtures/impl_grab.impl.jac +4 -0
- jaclang/tests/fixtures/impl_grab.jac +2 -0
- jaclang/tests/fixtures/inherit_check.jac +33 -0
- jaclang/tests/fixtures/jacsamp.jac +6 -0
- jaclang/tests/fixtures/jp_importer.jac +17 -0
- jaclang/tests/fixtures/lambda.jac +6 -0
- jaclang/tests/fixtures/maxfail_run_test.jac +5 -0
- jaclang/tests/fixtures/mtest.impl.jac +6 -0
- jaclang/tests/fixtures/mtest.jac +6 -0
- jaclang/tests/fixtures/needs_import.jac +18 -0
- jaclang/tests/fixtures/needs_import_1.jac +6 -0
- jaclang/tests/fixtures/needs_import_2.jac +6 -0
- jaclang/tests/fixtures/needs_import_3.jac +6 -0
- jaclang/tests/fixtures/needs_import_dup.jac +18 -0
- jaclang/tests/fixtures/package_import.jac +6 -0
- jaclang/tests/fixtures/pyfunc.py +11 -0
- jaclang/tests/fixtures/pyfunc_1.py +311 -0
- jaclang/tests/fixtures/pyfunc_2.py +279 -0
- jaclang/tests/fixtures/pyfunc_3.py +310 -0
- jaclang/tests/fixtures/random_check.jac +62 -0
- jaclang/tests/fixtures/raw_byte_string.jac +18 -0
- jaclang/tests/fixtures/registry.jac +37 -0
- jaclang/tests/fixtures/run_test.jac +5 -0
- jaclang/tests/fixtures/semstr.jac +33 -0
- jaclang/tests/fixtures/simple_archs.jac +26 -0
- jaclang/tests/fixtures/slice_vals.jac +7 -0
- jaclang/tests/fixtures/sub_abil_sep.jac +15 -0
- jaclang/tests/fixtures/sub_abil_sep_multilev.jac +17 -0
- jaclang/tests/fixtures/try_finally.jac +34 -0
- jaclang/tests/fixtures/tupleunpack.jac +6 -0
- jaclang/tests/fixtures/tuplytuples.jac +8 -0
- jaclang/tests/fixtures/type_info.jac +15 -0
- jaclang/tests/fixtures/with_context.jac +30 -0
- jaclang/tests/fixtures/with_llm_function.jac +33 -0
- jaclang/tests/fixtures/with_llm_lower.jac +45 -0
- jaclang/tests/fixtures/with_llm_method.jac +51 -0
- jaclang/tests/fixtures/with_llm_type.jac +52 -0
- jaclang/tests/test_cli.py +239 -0
- jaclang/tests/test_language.py +831 -0
- jaclang/tests/test_man_code.py +148 -0
- jaclang/tests/test_reference.py +95 -0
- jaclang/tests/test_settings.py +46 -0
- jaclang/utils/helpers.py +11 -0
- jaclang/utils/tests/test_lang_tools.py +17 -0
- jaclang/utils/treeprinter.py +12 -4
- jaclang/vendor/__init__.py +12 -1
- jaclang/vendor/attr/__init__.py +134 -0
- jaclang/vendor/attr/__init__.pyi +555 -0
- jaclang/vendor/attr/_cmp.py +150 -0
- jaclang/vendor/attr/_cmp.pyi +13 -0
- jaclang/vendor/attr/_compat.py +87 -0
- jaclang/vendor/attr/_config.py +31 -0
- jaclang/vendor/attr/_funcs.py +483 -0
- jaclang/vendor/attr/_make.py +3119 -0
- jaclang/vendor/attr/_next_gen.py +229 -0
- jaclang/vendor/attr/_typing_compat.pyi +15 -0
- jaclang/vendor/attr/_version_info.py +86 -0
- jaclang/vendor/attr/_version_info.pyi +9 -0
- jaclang/vendor/attr/converters.py +144 -0
- jaclang/vendor/attr/converters.pyi +13 -0
- jaclang/vendor/attr/exceptions.py +95 -0
- jaclang/vendor/attr/exceptions.pyi +17 -0
- jaclang/vendor/attr/filters.py +66 -0
- jaclang/vendor/attr/filters.pyi +6 -0
- jaclang/vendor/attr/setters.py +73 -0
- jaclang/vendor/attr/setters.pyi +19 -0
- jaclang/vendor/attr/validators.py +681 -0
- jaclang/vendor/attr/validators.pyi +88 -0
- jaclang/vendor/attrs/__init__.py +65 -0
- jaclang/vendor/attrs/__init__.pyi +67 -0
- jaclang/vendor/attrs/converters.py +3 -0
- jaclang/vendor/attrs/exceptions.py +3 -0
- jaclang/vendor/attrs/filters.py +3 -0
- jaclang/vendor/attrs/py.typed +0 -0
- jaclang/vendor/attrs/setters.py +3 -0
- jaclang/vendor/attrs/validators.py +3 -0
- jaclang/vendor/attrs-23.2.0.dist-info/METADATA +202 -0
- jaclang/vendor/attrs-23.2.0.dist-info/RECORD +35 -0
- jaclang/vendor/attrs-23.2.0.dist-info/WHEEL +4 -0
- jaclang/vendor/attrs-23.2.0.dist-info/licenses/LICENSE +21 -0
- jaclang/vendor/cattr/__init__.py +25 -0
- jaclang/vendor/cattr/converters.py +8 -0
- jaclang/vendor/cattr/disambiguators.py +3 -0
- jaclang/vendor/cattr/dispatch.py +3 -0
- jaclang/vendor/cattr/errors.py +15 -0
- jaclang/vendor/cattr/gen.py +21 -0
- jaclang/vendor/cattr/preconf/__init__.py +3 -0
- jaclang/vendor/cattr/preconf/bson.py +4 -0
- jaclang/vendor/cattr/preconf/json.py +4 -0
- jaclang/vendor/cattr/preconf/msgpack.py +4 -0
- jaclang/vendor/cattr/preconf/orjson.py +4 -0
- jaclang/vendor/cattr/preconf/pyyaml.py +4 -0
- jaclang/vendor/cattr/preconf/tomlkit.py +4 -0
- jaclang/vendor/cattr/preconf/ujson.py +4 -0
- jaclang/vendor/cattr/py.typed +0 -0
- jaclang/vendor/cattrs/__init__.py +55 -0
- jaclang/vendor/cattrs/_compat.py +465 -0
- jaclang/vendor/cattrs/_generics.py +22 -0
- jaclang/vendor/cattrs/converters.py +1101 -0
- jaclang/vendor/cattrs/disambiguators.py +132 -0
- jaclang/vendor/cattrs/dispatch.py +164 -0
- jaclang/vendor/cattrs/errors.py +129 -0
- jaclang/vendor/cattrs/fns.py +17 -0
- jaclang/vendor/cattrs/gen/__init__.py +890 -0
- jaclang/vendor/cattrs/gen/_consts.py +19 -0
- jaclang/vendor/cattrs/gen/_generics.py +43 -0
- jaclang/vendor/cattrs/gen/_lc.py +28 -0
- jaclang/vendor/cattrs/gen/_shared.py +51 -0
- jaclang/vendor/cattrs/gen/typeddicts.py +624 -0
- jaclang/vendor/cattrs/preconf/__init__.py +7 -0
- jaclang/vendor/cattrs/preconf/bson.py +107 -0
- jaclang/vendor/cattrs/preconf/cbor2.py +47 -0
- jaclang/vendor/cattrs/preconf/json.py +52 -0
- jaclang/vendor/cattrs/preconf/msgpack.py +51 -0
- jaclang/vendor/cattrs/preconf/orjson.py +82 -0
- jaclang/vendor/cattrs/preconf/pyyaml.py +60 -0
- jaclang/vendor/cattrs/preconf/tomlkit.py +85 -0
- jaclang/vendor/cattrs/preconf/ujson.py +52 -0
- jaclang/vendor/cattrs/py.typed +0 -0
- jaclang/vendor/cattrs/strategies/__init__.py +11 -0
- jaclang/vendor/cattrs/strategies/_class_methods.py +64 -0
- jaclang/vendor/cattrs/strategies/_subclasses.py +224 -0
- jaclang/vendor/cattrs/strategies/_unions.py +235 -0
- jaclang/vendor/cattrs/v.py +111 -0
- jaclang/vendor/cattrs-23.2.3.dist-info/METADATA +221 -0
- jaclang/vendor/cattrs-23.2.3.dist-info/RECORD +48 -0
- jaclang/vendor/cattrs-23.2.3.dist-info/WHEEL +4 -0
- jaclang/vendor/cattrs-23.2.3.dist-info/licenses/LICENSE +11 -0
- jaclang/vendor/lark/__init__.py +38 -38
- jaclang/vendor/lark/__pyinstaller/__init__.py +6 -7
- jaclang/vendor/lark/__pyinstaller/hook-lark.py +14 -14
- jaclang/vendor/lark/ast_utils.py +59 -70
- jaclang/vendor/lark/common.py +89 -113
- jaclang/vendor/lark/exceptions.py +292 -352
- jaclang/vendor/lark/grammar.py +130 -158
- jaclang/vendor/lark/grammars/common.lark +59 -59
- jaclang/vendor/lark/grammars/lark.lark +62 -62
- jaclang/vendor/lark/grammars/python.lark +302 -302
- jaclang/vendor/lark/grammars/unicode.lark +7 -7
- jaclang/vendor/lark/indenter.py +112 -118
- jaclang/vendor/lark/lark.py +661 -800
- jaclang/vendor/lark/lexer.py +678 -829
- jaclang/vendor/lark/load_grammar.py +1428 -1673
- jaclang/vendor/lark/parse_tree_builder.py +391 -466
- jaclang/vendor/lark/parser_frontends.py +257 -305
- jaclang/vendor/lark/parsers/cyk.py +340 -391
- jaclang/vendor/lark/parsers/earley.py +308 -385
- jaclang/vendor/lark/parsers/earley_common.py +42 -59
- jaclang/vendor/lark/parsers/earley_forest.py +810 -923
- jaclang/vendor/lark/parsers/grammar_analysis.py +203 -239
- jaclang/vendor/lark/parsers/lalr_analysis.py +332 -378
- jaclang/vendor/lark/parsers/lalr_interactive_parser.py +157 -171
- jaclang/vendor/lark/parsers/lalr_parser.py +122 -145
- jaclang/vendor/lark/parsers/lalr_parser_state.py +110 -141
- jaclang/vendor/lark/parsers/xearley.py +165 -209
- jaclang/vendor/lark/reconstruct.py +107 -131
- jaclang/vendor/lark/tools/__init__.py +71 -93
- jaclang/vendor/lark/tools/nearley.py +202 -240
- jaclang/vendor/lark/tools/serialize.py +32 -35
- jaclang/vendor/lark/tools/standalone.py +196 -225
- jaclang/vendor/lark/tree.py +272 -302
- jaclang/vendor/lark/tree_matcher.py +186 -194
- jaclang/vendor/lark/tree_templates.py +18 -26
- jaclang/vendor/lark/utils.py +361 -393
- jaclang/vendor/lark/visitors.py +593 -645
- jaclang/vendor/lark-1.1.9.dist-info/LICENSE +18 -0
- jaclang/vendor/lark-1.1.9.dist-info/METADATA +47 -0
- jaclang/vendor/lark-1.1.9.dist-info/RECORD +46 -0
- jaclang/vendor/lark-1.1.9.dist-info/WHEEL +5 -0
- jaclang/vendor/lark-1.1.9.dist-info/entry_points.txt +2 -0
- jaclang/vendor/lark-1.1.9.dist-info/top_level.txt +1 -0
- jaclang/vendor/lsprotocol/__init__.py +2 -0
- jaclang/vendor/lsprotocol/_hooks.py +1237 -0
- jaclang/vendor/lsprotocol/converters.py +17 -0
- jaclang/vendor/lsprotocol/py.typed +0 -0
- jaclang/vendor/lsprotocol/types.py +12898 -0
- jaclang/vendor/lsprotocol/validators.py +47 -0
- jaclang/vendor/lsprotocol-2023.0.1.dist-info/LICENSE +21 -0
- jaclang/vendor/lsprotocol-2023.0.1.dist-info/METADATA +65 -0
- jaclang/vendor/lsprotocol-2023.0.1.dist-info/RECORD +10 -0
- jaclang/vendor/lsprotocol-2023.0.1.dist-info/WHEEL +4 -0
- jaclang/vendor/mypy/api.py +1 -3
- jaclang/vendor/mypy/applytype.py +24 -24
- jaclang/vendor/mypy/argmap.py +5 -9
- jaclang/vendor/mypy/binder.py +11 -42
- jaclang/vendor/mypy/build.py +78 -260
- jaclang/vendor/mypy/checker.py +394 -930
- jaclang/vendor/mypy/checkexpr.py +210 -640
- jaclang/vendor/mypy/checkmember.py +44 -94
- jaclang/vendor/mypy/checkpattern.py +32 -104
- jaclang/vendor/mypy/checkstrformat.py +38 -131
- jaclang/vendor/mypy/config_parser.py +8 -31
- jaclang/vendor/mypy/constant_fold.py +1 -3
- jaclang/vendor/mypy/constraints.py +94 -253
- jaclang/vendor/mypy/copytype.py +3 -13
- jaclang/vendor/mypy/defaults.py +2 -4
- jaclang/vendor/mypy/dmypy/client.py +30 -102
- jaclang/vendor/mypy/dmypy_server.py +31 -118
- jaclang/vendor/mypy/erasetype.py +6 -18
- jaclang/vendor/mypy/errorcodes.py +26 -64
- jaclang/vendor/mypy/errors.py +23 -117
- jaclang/vendor/mypy/evalexpr.py +1 -3
- jaclang/vendor/mypy/expandtype.py +37 -40
- jaclang/vendor/mypy/exprtotype.py +14 -27
- jaclang/vendor/mypy/fastparse.py +66 -215
- jaclang/vendor/mypy/find_sources.py +4 -14
- jaclang/vendor/mypy/fixup.py +5 -10
- jaclang/vendor/mypy/indirection.py +1 -3
- jaclang/vendor/mypy/infer.py +2 -6
- jaclang/vendor/mypy/inspections.py +3 -13
- jaclang/vendor/mypy/ipc.py +7 -28
- jaclang/vendor/mypy/join.py +20 -39
- jaclang/vendor/mypy/literals.py +2 -10
- jaclang/vendor/mypy/main.py +39 -138
- jaclang/vendor/mypy/maptype.py +2 -6
- jaclang/vendor/mypy/meet.py +23 -77
- jaclang/vendor/mypy/message_registry.py +33 -88
- jaclang/vendor/mypy/messages.py +146 -447
- jaclang/vendor/mypy/metastore.py +2 -6
- jaclang/vendor/mypy/modulefinder.py +29 -76
- jaclang/vendor/mypy/moduleinspect.py +5 -17
- jaclang/vendor/mypy/mro.py +1 -3
- jaclang/vendor/mypy/nodes.py +35 -119
- jaclang/vendor/mypy/operators.py +2 -11
- jaclang/vendor/mypy/options.py +3 -9
- jaclang/vendor/mypy/parse.py +1 -3
- jaclang/vendor/mypy/plugin.py +25 -75
- jaclang/vendor/mypy/plugins/attrs.py +53 -119
- jaclang/vendor/mypy/plugins/common.py +9 -29
- jaclang/vendor/mypy/plugins/ctypes.py +5 -15
- jaclang/vendor/mypy/plugins/dataclasses.py +42 -107
- jaclang/vendor/mypy/plugins/default.py +26 -45
- jaclang/vendor/mypy/plugins/enums.py +4 -17
- jaclang/vendor/mypy/plugins/functools.py +2 -11
- jaclang/vendor/mypy/plugins/proper_plugin.py +2 -6
- jaclang/vendor/mypy/plugins/singledispatch.py +7 -33
- jaclang/vendor/mypy/reachability.py +2 -8
- jaclang/vendor/mypy/refinfo.py +1 -3
- jaclang/vendor/mypy/report.py +23 -52
- jaclang/vendor/mypy/semanal.py +385 -693
- jaclang/vendor/mypy/semanal_classprop.py +9 -34
- jaclang/vendor/mypy/semanal_enum.py +7 -19
- jaclang/vendor/mypy/semanal_infer.py +1 -3
- jaclang/vendor/mypy/semanal_main.py +5 -25
- jaclang/vendor/mypy/semanal_namedtuple.py +17 -56
- jaclang/vendor/mypy/semanal_newtype.py +8 -27
- jaclang/vendor/mypy/semanal_pass1.py +2 -6
- jaclang/vendor/mypy/semanal_shared.py +9 -27
- jaclang/vendor/mypy/semanal_typeargs.py +12 -41
- jaclang/vendor/mypy/semanal_typeddict.py +18 -59
- jaclang/vendor/mypy/server/astdiff.py +9 -34
- jaclang/vendor/mypy/server/astmerge.py +2 -6
- jaclang/vendor/mypy/server/deps.py +22 -71
- jaclang/vendor/mypy/server/mergecheck.py +1 -3
- jaclang/vendor/mypy/server/objgraph.py +2 -8
- jaclang/vendor/mypy/server/update.py +18 -54
- jaclang/vendor/mypy/solve.py +4 -17
- jaclang/vendor/mypy/split_namespace.py +1 -3
- jaclang/vendor/mypy/stats.py +6 -24
- jaclang/vendor/mypy/strconv.py +8 -31
- jaclang/vendor/mypy/stubdoc.py +8 -38
- jaclang/vendor/mypy/stubgen.py +79 -144
- jaclang/vendor/mypy/stubgenc.py +22 -69
- jaclang/vendor/mypy/stubtest.py +62 -167
- jaclang/vendor/mypy/stubutil.py +45 -61
- jaclang/vendor/mypy/subtypes.py +57 -133
- jaclang/vendor/mypy/suggestions.py +19 -53
- jaclang/vendor/mypy/test/data.py +13 -40
- jaclang/vendor/mypy/test/helpers.py +18 -43
- jaclang/vendor/mypy/test/meta/_pytest.py +2 -13
- jaclang/vendor/mypy/test/meta/test_parse_data.py +5 -9
- jaclang/vendor/mypy/test/meta/test_update_data.py +1 -3
- jaclang/vendor/mypy/test/test_find_sources.py +14 -32
- jaclang/vendor/mypy/test/test_ref_info.py +3 -9
- jaclang/vendor/mypy/test/testargs.py +1 -4
- jaclang/vendor/mypy/test/testcheck.py +14 -47
- jaclang/vendor/mypy/test/testcmdline.py +3 -14
- jaclang/vendor/mypy/test/testconstraints.py +8 -26
- jaclang/vendor/mypy/test/testdaemon.py +2 -9
- jaclang/vendor/mypy/test/testdeps.py +4 -12
- jaclang/vendor/mypy/test/testdiff.py +2 -6
- jaclang/vendor/mypy/test/testerrorstream.py +1 -3
- jaclang/vendor/mypy/test/testfinegrained.py +18 -56
- jaclang/vendor/mypy/test/testgraph.py +3 -18
- jaclang/vendor/mypy/test/testinfer.py +13 -55
- jaclang/vendor/mypy/test/testipc.py +3 -9
- jaclang/vendor/mypy/test/testmerge.py +5 -17
- jaclang/vendor/mypy/test/testmodulefinder.py +8 -30
- jaclang/vendor/mypy/test/testmypyc.py +1 -3
- jaclang/vendor/mypy/test/testparse.py +1 -3
- jaclang/vendor/mypy/test/testpep561.py +4 -13
- jaclang/vendor/mypy/test/testpythoneval.py +2 -6
- jaclang/vendor/mypy/test/testreports.py +1 -2
- jaclang/vendor/mypy/test/testsemanal.py +3 -10
- jaclang/vendor/mypy/test/testsolve.py +5 -15
- jaclang/vendor/mypy/test/teststubgen.py +69 -210
- jaclang/vendor/mypy/test/teststubtest.py +123 -163
- jaclang/vendor/mypy/test/testsubtypes.py +14 -34
- jaclang/vendor/mypy/test/testtransform.py +2 -8
- jaclang/vendor/mypy/test/testtypegen.py +2 -8
- jaclang/vendor/mypy/test/testtypes.py +77 -253
- jaclang/vendor/mypy/test/testutil.py +1 -3
- jaclang/vendor/mypy/test/typefixture.py +11 -38
- jaclang/vendor/mypy/test/update_data.py +4 -15
- jaclang/vendor/mypy/test/visitors.py +1 -9
- jaclang/vendor/mypy/treetransform.py +8 -25
- jaclang/vendor/mypy/tvar_scope.py +23 -3
- jaclang/vendor/mypy/type_visitor.py +3 -10
- jaclang/vendor/mypy/typeanal.py +183 -309
- jaclang/vendor/mypy/typeops.py +27 -73
- jaclang/vendor/mypy/types.py +77 -185
- jaclang/vendor/mypy/types_utils.py +7 -20
- jaclang/vendor/mypy/typeshed/LICENSE +237 -0
- jaclang/vendor/mypy/typeshed/stdlib/VERSIONS +309 -0
- jaclang/vendor/mypy/typeshed/stdlib/__future__.pyi +36 -0
- jaclang/vendor/mypy/typeshed/stdlib/__main__.pyi +3 -0
- jaclang/vendor/mypy/typeshed/stdlib/_ast.pyi +591 -0
- jaclang/vendor/mypy/typeshed/stdlib/_bisect.pyi +84 -0
- jaclang/vendor/mypy/typeshed/stdlib/_bootlocale.pyi +1 -0
- jaclang/vendor/mypy/typeshed/stdlib/_codecs.pyi +133 -0
- jaclang/vendor/mypy/typeshed/stdlib/_collections_abc.pyi +94 -0
- jaclang/vendor/mypy/typeshed/stdlib/_compat_pickle.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/_compression.pyi +25 -0
- jaclang/vendor/mypy/typeshed/stdlib/_csv.pyi +90 -0
- jaclang/vendor/mypy/typeshed/stdlib/_ctypes.pyi +207 -0
- jaclang/vendor/mypy/typeshed/stdlib/_curses.pyi +566 -0
- jaclang/vendor/mypy/typeshed/stdlib/_decimal.pyi +281 -0
- jaclang/vendor/mypy/typeshed/stdlib/_dummy_thread.pyi +33 -0
- jaclang/vendor/mypy/typeshed/stdlib/_dummy_threading.pyi +164 -0
- jaclang/vendor/mypy/typeshed/stdlib/_heapq.pyi +11 -0
- jaclang/vendor/mypy/typeshed/stdlib/_imp.pyi +28 -0
- jaclang/vendor/mypy/typeshed/stdlib/_json.pyi +49 -0
- jaclang/vendor/mypy/typeshed/stdlib/_locale.pyi +100 -0
- jaclang/vendor/mypy/typeshed/stdlib/_lsprof.pyi +35 -0
- jaclang/vendor/mypy/typeshed/stdlib/_markupbase.pyi +16 -0
- jaclang/vendor/mypy/typeshed/stdlib/_msi.pyi +92 -0
- jaclang/vendor/mypy/typeshed/stdlib/_operator.pyi +147 -0
- jaclang/vendor/mypy/typeshed/stdlib/_osx_support.pyi +34 -0
- jaclang/vendor/mypy/typeshed/stdlib/_posixsubprocess.pyi +33 -0
- jaclang/vendor/mypy/typeshed/stdlib/_py_abc.pyi +14 -0
- jaclang/vendor/mypy/typeshed/stdlib/_pydecimal.pyi +43 -0
- jaclang/vendor/mypy/typeshed/stdlib/_random.pyi +12 -0
- jaclang/vendor/mypy/typeshed/stdlib/_sitebuiltins.pyi +16 -0
- jaclang/vendor/mypy/typeshed/stdlib/_socket.pyi +803 -0
- jaclang/vendor/mypy/typeshed/stdlib/_stat.pyi +103 -0
- jaclang/vendor/mypy/typeshed/stdlib/_thread.pyi +59 -0
- jaclang/vendor/mypy/typeshed/stdlib/_threading_local.pyi +17 -0
- jaclang/vendor/mypy/typeshed/stdlib/_tkinter.pyi +121 -0
- jaclang/vendor/mypy/typeshed/stdlib/_tracemalloc.pyi +17 -0
- jaclang/vendor/mypy/typeshed/stdlib/_typeshed/__init__.pyi +347 -0
- jaclang/vendor/mypy/typeshed/stdlib/_typeshed/dbapi.pyi +37 -0
- jaclang/vendor/mypy/typeshed/stdlib/_typeshed/wsgi.pyi +44 -0
- jaclang/vendor/mypy/typeshed/stdlib/_typeshed/xml.pyi +9 -0
- jaclang/vendor/mypy/typeshed/stdlib/_warnings.pyi +55 -0
- jaclang/vendor/mypy/typeshed/stdlib/_weakref.pyi +41 -0
- jaclang/vendor/mypy/typeshed/stdlib/_weakrefset.pyi +51 -0
- jaclang/vendor/mypy/typeshed/stdlib/_winapi.pyi +255 -0
- jaclang/vendor/mypy/typeshed/stdlib/abc.pyi +51 -0
- jaclang/vendor/mypy/typeshed/stdlib/aifc.pyi +91 -0
- jaclang/vendor/mypy/typeshed/stdlib/antigravity.pyi +3 -0
- jaclang/vendor/mypy/typeshed/stdlib/argparse.pyi +595 -0
- jaclang/vendor/mypy/typeshed/stdlib/array.pyi +92 -0
- jaclang/vendor/mypy/typeshed/stdlib/ast.pyi +277 -0
- jaclang/vendor/mypy/typeshed/stdlib/asynchat.pyi +21 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/__init__.pyi +41 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_events.pyi +440 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_futures.pyi +19 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_subprocess.pyi +63 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_tasks.pyi +9 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/constants.pyi +20 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/coroutines.pyi +26 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/events.pyi +580 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/exceptions.pyi +43 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/format_helpers.pyi +20 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/futures.pyi +57 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/locks.pyi +121 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/log.pyi +3 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/mixins.pyi +9 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/proactor_events.pyi +64 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/protocols.pyi +34 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/queues.pyi +47 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/runners.pyi +32 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/selector_events.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/sslproto.pyi +165 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/staggered.pyi +10 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/streams.pyi +153 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/subprocess.pyi +229 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/taskgroups.pyi +25 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/tasks.pyi +497 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/threads.pyi +9 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/timeouts.pyi +19 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/transports.pyi +47 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/trsock.pyi +94 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/unix_events.pyi +196 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_events.pyi +85 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_utils.pyi +49 -0
- jaclang/vendor/mypy/typeshed/stdlib/asyncore.pyi +90 -0
- jaclang/vendor/mypy/typeshed/stdlib/atexit.pyi +12 -0
- jaclang/vendor/mypy/typeshed/stdlib/audioop.pyi +43 -0
- jaclang/vendor/mypy/typeshed/stdlib/base64.pyi +59 -0
- jaclang/vendor/mypy/typeshed/stdlib/bdb.pyi +102 -0
- jaclang/vendor/mypy/typeshed/stdlib/binascii.pyi +36 -0
- jaclang/vendor/mypy/typeshed/stdlib/binhex.pyi +45 -0
- jaclang/vendor/mypy/typeshed/stdlib/bisect.pyi +4 -0
- jaclang/vendor/mypy/typeshed/stdlib/builtins.pyi +1936 -0
- jaclang/vendor/mypy/typeshed/stdlib/bz2.pyi +146 -0
- jaclang/vendor/mypy/typeshed/stdlib/cProfile.pyi +31 -0
- jaclang/vendor/mypy/typeshed/stdlib/calendar.pyi +208 -0
- jaclang/vendor/mypy/typeshed/stdlib/cgi.pyi +118 -0
- jaclang/vendor/mypy/typeshed/stdlib/cgitb.pyi +32 -0
- jaclang/vendor/mypy/typeshed/stdlib/chunk.pyi +20 -0
- jaclang/vendor/mypy/typeshed/stdlib/cmath.pyi +36 -0
- jaclang/vendor/mypy/typeshed/stdlib/cmd.pyi +45 -0
- jaclang/vendor/mypy/typeshed/stdlib/code.pyi +33 -0
- jaclang/vendor/mypy/typeshed/stdlib/codecs.pyi +285 -0
- jaclang/vendor/mypy/typeshed/stdlib/codeop.pyi +13 -0
- jaclang/vendor/mypy/typeshed/stdlib/collections/__init__.pyi +485 -0
- jaclang/vendor/mypy/typeshed/stdlib/collections/abc.pyi +2 -0
- jaclang/vendor/mypy/typeshed/stdlib/colorsys.pyi +13 -0
- jaclang/vendor/mypy/typeshed/stdlib/compileall.pyi +111 -0
- jaclang/vendor/mypy/typeshed/stdlib/concurrent/__init__.pyi +0 -0
- jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/__init__.pyi +32 -0
- jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/_base.pyi +126 -0
- jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/process.pyi +233 -0
- jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/thread.pyi +80 -0
- jaclang/vendor/mypy/typeshed/stdlib/configparser.pyi +313 -0
- jaclang/vendor/mypy/typeshed/stdlib/contextlib.pyi +208 -0
- jaclang/vendor/mypy/typeshed/stdlib/contextvars.pyi +63 -0
- jaclang/vendor/mypy/typeshed/stdlib/copy.pyi +16 -0
- jaclang/vendor/mypy/typeshed/stdlib/copyreg.pyi +21 -0
- jaclang/vendor/mypy/typeshed/stdlib/crypt.pyi +12 -0
- jaclang/vendor/mypy/typeshed/stdlib/csv.pyi +147 -0
- jaclang/vendor/mypy/typeshed/stdlib/ctypes/__init__.pyi +187 -0
- jaclang/vendor/mypy/typeshed/stdlib/ctypes/_endian.pyi +19 -0
- jaclang/vendor/mypy/typeshed/stdlib/ctypes/util.pyi +6 -0
- jaclang/vendor/mypy/typeshed/stdlib/ctypes/wintypes.pyi +298 -0
- jaclang/vendor/mypy/typeshed/stdlib/curses/__init__.pyi +22 -0
- jaclang/vendor/mypy/typeshed/stdlib/curses/ascii.pyi +62 -0
- jaclang/vendor/mypy/typeshed/stdlib/curses/has_key.pyi +1 -0
- jaclang/vendor/mypy/typeshed/stdlib/curses/panel.pyi +22 -0
- jaclang/vendor/mypy/typeshed/stdlib/curses/textpad.pyi +11 -0
- jaclang/vendor/mypy/typeshed/stdlib/dataclasses.pyi +315 -0
- jaclang/vendor/mypy/typeshed/stdlib/datetime.pyi +295 -0
- jaclang/vendor/mypy/typeshed/stdlib/dbm/__init__.pyi +95 -0
- jaclang/vendor/mypy/typeshed/stdlib/dbm/dumb.pyi +31 -0
- jaclang/vendor/mypy/typeshed/stdlib/dbm/gnu.pyi +41 -0
- jaclang/vendor/mypy/typeshed/stdlib/dbm/ndbm.pyi +37 -0
- jaclang/vendor/mypy/typeshed/stdlib/decimal.pyi +2 -0
- jaclang/vendor/mypy/typeshed/stdlib/difflib.pyi +140 -0
- jaclang/vendor/mypy/typeshed/stdlib/dis.pyi +144 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/__init__.pyi +5 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/archive_util.pyi +20 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/bcppcompiler.pyi +3 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/ccompiler.pyi +152 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/cmd.pyi +66 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/__init__.pyi +0 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist.pyi +25 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_dumb.pyi +21 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_msi.pyi +45 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_packager.pyi +0 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_rpm.pyi +52 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_wininst.pyi +16 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build.pyi +31 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_clib.pyi +27 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_ext.pyi +50 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_py.pyi +44 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_scripts.pyi +24 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/check.pyi +39 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/clean.pyi +17 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/config.pyi +83 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install.pyi +63 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_data.pyi +19 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_egg_info.pyi +18 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_headers.pyi +16 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_lib.pyi +25 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_scripts.pyi +18 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/register.pyi +18 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/sdist.pyi +42 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/command/upload.pyi +17 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/config.pyi +17 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/core.pyi +57 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/cygwinccompiler.pyi +20 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/debug.pyi +1 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/dep_util.pyi +3 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/dir_util.pyi +13 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/dist.pyi +146 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/errors.pyi +19 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/extension.pyi +36 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/fancy_getopt.pyi +34 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/file_util.pyi +14 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/filelist.pyi +50 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/log.pyi +25 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/msvccompiler.pyi +3 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/spawn.pyi +2 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/sysconfig.pyi +31 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/text_file.pyi +21 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/unixccompiler.pyi +3 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/util.pyi +46 -0
- jaclang/vendor/mypy/typeshed/stdlib/distutils/version.pyi +36 -0
- jaclang/vendor/mypy/typeshed/stdlib/doctest.pyi +248 -0
- jaclang/vendor/mypy/typeshed/stdlib/dummy_threading.pyi +2 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/__init__.pyi +29 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/_header_value_parser.pyi +392 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/_policybase.pyi +51 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/base64mime.pyi +13 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/charset.pyi +34 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/contentmanager.pyi +11 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/encoders.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/errors.pyi +39 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/feedparser.pyi +23 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/generator.pyi +40 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/header.pyi +31 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/headerregistry.pyi +178 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/iterators.pyi +12 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/message.pyi +165 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/mime/__init__.pyi +0 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/mime/application.pyi +17 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/mime/audio.pyi +17 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/mime/base.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/mime/image.pyi +17 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/mime/message.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/mime/multipart.pyi +18 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/mime/nonmultipart.pyi +5 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/mime/text.pyi +9 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/parser.pyi +26 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/policy.pyi +38 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/quoprimime.pyi +28 -0
- jaclang/vendor/mypy/typeshed/stdlib/email/utils.pyi +70 -0
- jaclang/vendor/mypy/typeshed/stdlib/encodings/__init__.pyi +10 -0
- jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8.pyi +21 -0
- jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8_sig.pyi +22 -0
- jaclang/vendor/mypy/typeshed/stdlib/ensurepip/__init__.pyi +12 -0
- jaclang/vendor/mypy/typeshed/stdlib/enum.pyi +320 -0
- jaclang/vendor/mypy/typeshed/stdlib/errno.pyi +222 -0
- jaclang/vendor/mypy/typeshed/stdlib/faulthandler.pyi +13 -0
- jaclang/vendor/mypy/typeshed/stdlib/fcntl.pyi +127 -0
- jaclang/vendor/mypy/typeshed/stdlib/filecmp.pyi +57 -0
- jaclang/vendor/mypy/typeshed/stdlib/fileinput.pyi +213 -0
- jaclang/vendor/mypy/typeshed/stdlib/fnmatch.pyi +9 -0
- jaclang/vendor/mypy/typeshed/stdlib/formatter.pyi +88 -0
- jaclang/vendor/mypy/typeshed/stdlib/fractions.pyi +150 -0
- jaclang/vendor/mypy/typeshed/stdlib/ftplib.pyi +178 -0
- jaclang/vendor/mypy/typeshed/stdlib/functools.pyi +213 -0
- jaclang/vendor/mypy/typeshed/stdlib/gc.pyi +37 -0
- jaclang/vendor/mypy/typeshed/stdlib/genericpath.pyi +52 -0
- jaclang/vendor/mypy/typeshed/stdlib/getopt.pyi +11 -0
- jaclang/vendor/mypy/typeshed/stdlib/getpass.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/gettext.pyi +169 -0
- jaclang/vendor/mypy/typeshed/stdlib/glob.pyi +42 -0
- jaclang/vendor/mypy/typeshed/stdlib/graphlib.pyi +28 -0
- jaclang/vendor/mypy/typeshed/stdlib/grp.pyi +22 -0
- jaclang/vendor/mypy/typeshed/stdlib/gzip.pyi +160 -0
- jaclang/vendor/mypy/typeshed/stdlib/hashlib.pyi +167 -0
- jaclang/vendor/mypy/typeshed/stdlib/heapq.pyi +17 -0
- jaclang/vendor/mypy/typeshed/stdlib/hmac.pyi +38 -0
- jaclang/vendor/mypy/typeshed/stdlib/html/__init__.pyi +6 -0
- jaclang/vendor/mypy/typeshed/stdlib/html/entities.pyi +6 -0
- jaclang/vendor/mypy/typeshed/stdlib/html/parser.pyi +34 -0
- jaclang/vendor/mypy/typeshed/stdlib/http/__init__.pyi +105 -0
- jaclang/vendor/mypy/typeshed/stdlib/http/client.pyi +259 -0
- jaclang/vendor/mypy/typeshed/stdlib/http/cookiejar.pyi +159 -0
- jaclang/vendor/mypy/typeshed/stdlib/http/cookies.pyi +60 -0
- jaclang/vendor/mypy/typeshed/stdlib/http/server.pyi +83 -0
- jaclang/vendor/mypy/typeshed/stdlib/imaplib.pyi +168 -0
- jaclang/vendor/mypy/typeshed/stdlib/imghdr.pyi +17 -0
- jaclang/vendor/mypy/typeshed/stdlib/imp.pyi +62 -0
- jaclang/vendor/mypy/typeshed/stdlib/importlib/__init__.pyi +24 -0
- jaclang/vendor/mypy/typeshed/stdlib/importlib/_abc.pyi +15 -0
- jaclang/vendor/mypy/typeshed/stdlib/importlib/abc.pyi +172 -0
- jaclang/vendor/mypy/typeshed/stdlib/importlib/machinery.pyi +179 -0
- jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/__init__.pyi +285 -0
- jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/_meta.pyi +49 -0
- jaclang/vendor/mypy/typeshed/stdlib/importlib/readers.pyi +68 -0
- jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/__init__.pyi +46 -0
- jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/abc.pyi +12 -0
- jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/readers.pyi +14 -0
- jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/simple.pyi +56 -0
- jaclang/vendor/mypy/typeshed/stdlib/importlib/simple.pyi +11 -0
- jaclang/vendor/mypy/typeshed/stdlib/importlib/util.pyi +43 -0
- jaclang/vendor/mypy/typeshed/stdlib/inspect.pyi +632 -0
- jaclang/vendor/mypy/typeshed/stdlib/io.pyi +238 -0
- jaclang/vendor/mypy/typeshed/stdlib/ipaddress.pyi +208 -0
- jaclang/vendor/mypy/typeshed/stdlib/itertools.pyi +273 -0
- jaclang/vendor/mypy/typeshed/stdlib/json/__init__.pyi +61 -0
- jaclang/vendor/mypy/typeshed/stdlib/json/decoder.pyi +32 -0
- jaclang/vendor/mypy/typeshed/stdlib/json/encoder.pyi +40 -0
- jaclang/vendor/mypy/typeshed/stdlib/json/tool.pyi +1 -0
- jaclang/vendor/mypy/typeshed/stdlib/keyword.pyi +21 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/__init__.pyi +0 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/btm_matcher.pyi +28 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixer_base.pyi +42 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/__init__.pyi +0 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_apply.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_asserts.pyi +10 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_basestring.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_buffer.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_dict.pyi +16 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_except.pyi +14 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exec.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_execfile.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exitfunc.pyi +13 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_filter.pyi +9 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_funcattrs.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_future.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_getcwdu.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_has_key.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_idioms.pyi +15 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_import.pyi +16 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports.pyi +21 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports2.pyi +6 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_input.pyi +11 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_intern.pyi +9 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_isinstance.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools.pyi +9 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools_imports.pyi +7 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_long.pyi +7 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_map.pyi +9 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_metaclass.pyi +17 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_methodattrs.pyi +10 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ne.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_next.pyi +19 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_nonzero.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_numliterals.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_operator.pyi +12 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_paren.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_print.pyi +12 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raise.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raw_input.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reduce.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reload.pyi +9 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_renames.pyi +17 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_repr.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_set_literal.pyi +7 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_standarderror.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_sys_exc.pyi +9 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_throw.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_tuple_params.pyi +17 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_types.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_unicode.pyi +12 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_urllib.pyi +15 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ws_comma.pyi +12 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xrange.pyi +20 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xreadlines.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_zip.pyi +9 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/main.pyi +42 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/__init__.pyi +9 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/driver.pyi +27 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/grammar.pyi +24 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/literals.pyi +7 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/parse.pyi +30 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/pgen.pyi +50 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/token.pyi +67 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/tokenize.pyi +96 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pygram.pyi +114 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pytree.pyi +117 -0
- jaclang/vendor/mypy/typeshed/stdlib/lib2to3/refactor.pyi +82 -0
- jaclang/vendor/mypy/typeshed/stdlib/linecache.pyi +23 -0
- jaclang/vendor/mypy/typeshed/stdlib/locale.pyi +152 -0
- jaclang/vendor/mypy/typeshed/stdlib/logging/__init__.pyi +658 -0
- jaclang/vendor/mypy/typeshed/stdlib/logging/config.pyi +134 -0
- jaclang/vendor/mypy/typeshed/stdlib/logging/handlers.pyi +275 -0
- jaclang/vendor/mypy/typeshed/stdlib/lzma.pyi +197 -0
- jaclang/vendor/mypy/typeshed/stdlib/mailbox.pyi +256 -0
- jaclang/vendor/mypy/typeshed/stdlib/mailcap.pyi +11 -0
- jaclang/vendor/mypy/typeshed/stdlib/marshal.pyi +33 -0
- jaclang/vendor/mypy/typeshed/stdlib/math.pyi +125 -0
- jaclang/vendor/mypy/typeshed/stdlib/mimetypes.pyi +46 -0
- jaclang/vendor/mypy/typeshed/stdlib/mmap.pyi +113 -0
- jaclang/vendor/mypy/typeshed/stdlib/modulefinder.pyi +66 -0
- jaclang/vendor/mypy/typeshed/stdlib/msilib/__init__.pyi +177 -0
- jaclang/vendor/mypy/typeshed/stdlib/msilib/schema.pyi +94 -0
- jaclang/vendor/mypy/typeshed/stdlib/msilib/sequence.pyi +13 -0
- jaclang/vendor/mypy/typeshed/stdlib/msilib/text.pyi +7 -0
- jaclang/vendor/mypy/typeshed/stdlib/msvcrt.pyi +32 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/__init__.pyi +90 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/connection.pyi +75 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/context.pyi +189 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/__init__.pyi +77 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/connection.pyi +39 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/forkserver.pyi +31 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/heap.pyi +36 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/managers.pyi +212 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/pool.pyi +103 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_fork.pyi +23 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_forkserver.pyi +16 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_posix.pyi +20 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_win32.pyi +30 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/process.pyi +39 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/queues.pyi +41 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/reduction.pyi +90 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_sharer.pyi +20 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_tracker.pyi +18 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/shared_memory.pyi +40 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/sharedctypes.pyi +107 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/spawn.pyi +32 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/synchronize.pyi +54 -0
- jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/util.pyi +98 -0
- jaclang/vendor/mypy/typeshed/stdlib/netrc.pyi +23 -0
- jaclang/vendor/mypy/typeshed/stdlib/nis.pyi +9 -0
- jaclang/vendor/mypy/typeshed/stdlib/nntplib.pyi +125 -0
- jaclang/vendor/mypy/typeshed/stdlib/nt.pyi +111 -0
- jaclang/vendor/mypy/typeshed/stdlib/ntpath.pyi +119 -0
- jaclang/vendor/mypy/typeshed/stdlib/nturl2path.pyi +2 -0
- jaclang/vendor/mypy/typeshed/stdlib/numbers.pyi +209 -0
- jaclang/vendor/mypy/typeshed/stdlib/opcode.pyi +59 -0
- jaclang/vendor/mypy/typeshed/stdlib/operator.pyi +110 -0
- jaclang/vendor/mypy/typeshed/stdlib/optparse.pyi +255 -0
- jaclang/vendor/mypy/typeshed/stdlib/os/__init__.pyi +1157 -0
- jaclang/vendor/mypy/typeshed/stdlib/os/path.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/ossaudiodev.pyi +131 -0
- jaclang/vendor/mypy/typeshed/stdlib/parser.pyi +24 -0
- jaclang/vendor/mypy/typeshed/stdlib/pathlib.pyi +232 -0
- jaclang/vendor/mypy/typeshed/stdlib/pdb.pyi +181 -0
- jaclang/vendor/mypy/typeshed/stdlib/pickle.pyi +271 -0
- jaclang/vendor/mypy/typeshed/stdlib/pickletools.pyi +167 -0
- jaclang/vendor/mypy/typeshed/stdlib/pipes.pyi +16 -0
- jaclang/vendor/mypy/typeshed/stdlib/pkgutil.pyi +53 -0
- jaclang/vendor/mypy/typeshed/stdlib/platform.pyi +42 -0
- jaclang/vendor/mypy/typeshed/stdlib/plistlib.pyi +113 -0
- jaclang/vendor/mypy/typeshed/stdlib/poplib.pyi +71 -0
- jaclang/vendor/mypy/typeshed/stdlib/posix.pyi +361 -0
- jaclang/vendor/mypy/typeshed/stdlib/posixpath.pyi +161 -0
- jaclang/vendor/mypy/typeshed/stdlib/pprint.pyi +112 -0
- jaclang/vendor/mypy/typeshed/stdlib/profile.pyi +31 -0
- jaclang/vendor/mypy/typeshed/stdlib/pstats.pyi +80 -0
- jaclang/vendor/mypy/typeshed/stdlib/pty.pyi +19 -0
- jaclang/vendor/mypy/typeshed/stdlib/pwd.pyi +28 -0
- jaclang/vendor/mypy/typeshed/stdlib/py_compile.pyi +34 -0
- jaclang/vendor/mypy/typeshed/stdlib/pyclbr.pyi +74 -0
- jaclang/vendor/mypy/typeshed/stdlib/pydoc.pyi +261 -0
- jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/__init__.pyi +0 -0
- jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/topics.pyi +1 -0
- jaclang/vendor/mypy/typeshed/stdlib/pyexpat/__init__.pyi +85 -0
- jaclang/vendor/mypy/typeshed/stdlib/pyexpat/errors.pyi +49 -0
- jaclang/vendor/mypy/typeshed/stdlib/pyexpat/model.pyi +11 -0
- jaclang/vendor/mypy/typeshed/stdlib/queue.pyi +66 -0
- jaclang/vendor/mypy/typeshed/stdlib/quopri.pyi +11 -0
- jaclang/vendor/mypy/typeshed/stdlib/random.pyi +138 -0
- jaclang/vendor/mypy/typeshed/stdlib/re.pyi +290 -0
- jaclang/vendor/mypy/typeshed/stdlib/readline.pyi +36 -0
- jaclang/vendor/mypy/typeshed/stdlib/reprlib.pyi +65 -0
- jaclang/vendor/mypy/typeshed/stdlib/resource.pyi +94 -0
- jaclang/vendor/mypy/typeshed/stdlib/rlcompleter.pyi +9 -0
- jaclang/vendor/mypy/typeshed/stdlib/runpy.pyi +24 -0
- jaclang/vendor/mypy/typeshed/stdlib/sched.pyi +42 -0
- jaclang/vendor/mypy/typeshed/stdlib/secrets.pyi +15 -0
- jaclang/vendor/mypy/typeshed/stdlib/select.pyi +155 -0
- jaclang/vendor/mypy/typeshed/stdlib/selectors.pyi +67 -0
- jaclang/vendor/mypy/typeshed/stdlib/shelve.pyi +46 -0
- jaclang/vendor/mypy/typeshed/stdlib/shlex.pyi +63 -0
- jaclang/vendor/mypy/typeshed/stdlib/shutil.pyi +185 -0
- jaclang/vendor/mypy/typeshed/stdlib/signal.pyi +188 -0
- jaclang/vendor/mypy/typeshed/stdlib/site.pyi +27 -0
- jaclang/vendor/mypy/typeshed/stdlib/smtpd.pyi +91 -0
- jaclang/vendor/mypy/typeshed/stdlib/smtplib.pyi +204 -0
- jaclang/vendor/mypy/typeshed/stdlib/sndhdr.pyi +14 -0
- jaclang/vendor/mypy/typeshed/stdlib/socket.pyi +825 -0
- jaclang/vendor/mypy/typeshed/stdlib/socketserver.pyi +168 -0
- jaclang/vendor/mypy/typeshed/stdlib/spwd.pyi +41 -0
- jaclang/vendor/mypy/typeshed/stdlib/sqlite3/__init__.pyi +1 -0
- jaclang/vendor/mypy/typeshed/stdlib/sqlite3/dbapi2.pyi +551 -0
- jaclang/vendor/mypy/typeshed/stdlib/sre_compile.pyi +11 -0
- jaclang/vendor/mypy/typeshed/stdlib/sre_constants.pyi +130 -0
- jaclang/vendor/mypy/typeshed/stdlib/sre_parse.pyi +104 -0
- jaclang/vendor/mypy/typeshed/stdlib/ssl.pyi +537 -0
- jaclang/vendor/mypy/typeshed/stdlib/stat.pyi +1 -0
- jaclang/vendor/mypy/typeshed/stdlib/statistics.pyi +132 -0
- jaclang/vendor/mypy/typeshed/stdlib/string.pyi +83 -0
- jaclang/vendor/mypy/typeshed/stdlib/stringprep.pyi +27 -0
- jaclang/vendor/mypy/typeshed/stdlib/struct.pyi +26 -0
- jaclang/vendor/mypy/typeshed/stdlib/subprocess.pyi +2615 -0
- jaclang/vendor/mypy/typeshed/stdlib/sunau.pyi +86 -0
- jaclang/vendor/mypy/typeshed/stdlib/symbol.pyi +93 -0
- jaclang/vendor/mypy/typeshed/stdlib/symtable.pyi +58 -0
- jaclang/vendor/mypy/typeshed/stdlib/sys/__init__.pyi +373 -0
- jaclang/vendor/mypy/typeshed/stdlib/sys/_monitoring.pyi +52 -0
- jaclang/vendor/mypy/typeshed/stdlib/sysconfig.pyi +48 -0
- jaclang/vendor/mypy/typeshed/stdlib/syslog.pyi +46 -0
- jaclang/vendor/mypy/typeshed/stdlib/tabnanny.pyi +16 -0
- jaclang/vendor/mypy/typeshed/stdlib/tarfile.pyi +441 -0
- jaclang/vendor/mypy/typeshed/stdlib/telnetlib.pyi +122 -0
- jaclang/vendor/mypy/typeshed/stdlib/tempfile.pyi +477 -0
- jaclang/vendor/mypy/typeshed/stdlib/termios.pyi +267 -0
- jaclang/vendor/mypy/typeshed/stdlib/textwrap.pyi +103 -0
- jaclang/vendor/mypy/typeshed/stdlib/this.pyi +2 -0
- jaclang/vendor/mypy/typeshed/stdlib/threading.pyi +187 -0
- jaclang/vendor/mypy/typeshed/stdlib/time.pyi +108 -0
- jaclang/vendor/mypy/typeshed/stdlib/timeit.pyi +32 -0
- jaclang/vendor/mypy/typeshed/stdlib/tkinter/__init__.pyi +3654 -0
- jaclang/vendor/mypy/typeshed/stdlib/tkinter/colorchooser.pyi +20 -0
- jaclang/vendor/mypy/typeshed/stdlib/tkinter/commondialog.pyi +14 -0
- jaclang/vendor/mypy/typeshed/stdlib/tkinter/constants.pyi +80 -0
- jaclang/vendor/mypy/typeshed/stdlib/tkinter/dialog.pyi +16 -0
- jaclang/vendor/mypy/typeshed/stdlib/tkinter/dnd.pyi +20 -0
- jaclang/vendor/mypy/typeshed/stdlib/tkinter/filedialog.pyi +151 -0
- jaclang/vendor/mypy/typeshed/stdlib/tkinter/font.pyi +116 -0
- jaclang/vendor/mypy/typeshed/stdlib/tkinter/messagebox.pyi +44 -0
- jaclang/vendor/mypy/typeshed/stdlib/tkinter/scrolledtext.pyi +9 -0
- jaclang/vendor/mypy/typeshed/stdlib/tkinter/simpledialog.pyi +54 -0
- jaclang/vendor/mypy/typeshed/stdlib/tkinter/tix.pyi +299 -0
- jaclang/vendor/mypy/typeshed/stdlib/tkinter/ttk.pyi +1204 -0
- jaclang/vendor/mypy/typeshed/stdlib/token.pyi +159 -0
- jaclang/vendor/mypy/typeshed/stdlib/tokenize.pyi +177 -0
- jaclang/vendor/mypy/typeshed/stdlib/tomllib.pyi +10 -0
- jaclang/vendor/mypy/typeshed/stdlib/trace.pyi +79 -0
- jaclang/vendor/mypy/typeshed/stdlib/traceback.pyi +262 -0
- jaclang/vendor/mypy/typeshed/stdlib/tracemalloc.pyi +124 -0
- jaclang/vendor/mypy/typeshed/stdlib/tty.pyi +30 -0
- jaclang/vendor/mypy/typeshed/stdlib/turtle.pyi +713 -0
- jaclang/vendor/mypy/typeshed/stdlib/types.pyi +614 -0
- jaclang/vendor/mypy/typeshed/stdlib/typing.pyi +976 -0
- jaclang/vendor/mypy/typeshed/stdlib/typing_extensions.pyi +509 -0
- jaclang/vendor/mypy/typeshed/stdlib/unicodedata.pyi +73 -0
- jaclang/vendor/mypy/typeshed/stdlib/unittest/__init__.pyi +67 -0
- jaclang/vendor/mypy/typeshed/stdlib/unittest/_log.pyi +27 -0
- jaclang/vendor/mypy/typeshed/stdlib/unittest/async_case.pyi +21 -0
- jaclang/vendor/mypy/typeshed/stdlib/unittest/case.pyi +342 -0
- jaclang/vendor/mypy/typeshed/stdlib/unittest/loader.pyi +51 -0
- jaclang/vendor/mypy/typeshed/stdlib/unittest/main.pyi +69 -0
- jaclang/vendor/mypy/typeshed/stdlib/unittest/mock.pyi +430 -0
- jaclang/vendor/mypy/typeshed/stdlib/unittest/result.pyi +47 -0
- jaclang/vendor/mypy/typeshed/stdlib/unittest/runner.pyi +72 -0
- jaclang/vendor/mypy/typeshed/stdlib/unittest/signals.pyi +15 -0
- jaclang/vendor/mypy/typeshed/stdlib/unittest/suite.pyi +22 -0
- jaclang/vendor/mypy/typeshed/stdlib/unittest/util.pyi +23 -0
- jaclang/vendor/mypy/typeshed/stdlib/urllib/__init__.pyi +0 -0
- jaclang/vendor/mypy/typeshed/stdlib/urllib/error.pyi +23 -0
- jaclang/vendor/mypy/typeshed/stdlib/urllib/parse.pyi +210 -0
- jaclang/vendor/mypy/typeshed/stdlib/urllib/request.pyi +400 -0
- jaclang/vendor/mypy/typeshed/stdlib/urllib/response.pyi +43 -0
- jaclang/vendor/mypy/typeshed/stdlib/urllib/robotparser.pyi +20 -0
- jaclang/vendor/mypy/typeshed/stdlib/uu.pyi +13 -0
- jaclang/vendor/mypy/typeshed/stdlib/uuid.pyi +100 -0
- jaclang/vendor/mypy/typeshed/stdlib/warnings.pyi +112 -0
- jaclang/vendor/mypy/typeshed/stdlib/wave.pyi +85 -0
- jaclang/vendor/mypy/typeshed/stdlib/weakref.pyi +149 -0
- jaclang/vendor/mypy/typeshed/stdlib/webbrowser.pyi +74 -0
- jaclang/vendor/mypy/typeshed/stdlib/winreg.pyi +132 -0
- jaclang/vendor/mypy/typeshed/stdlib/winsound.pyi +28 -0
- jaclang/vendor/mypy/typeshed/stdlib/wsgiref/__init__.pyi +0 -0
- jaclang/vendor/mypy/typeshed/stdlib/wsgiref/handlers.pyi +91 -0
- jaclang/vendor/mypy/typeshed/stdlib/wsgiref/headers.pyi +26 -0
- jaclang/vendor/mypy/typeshed/stdlib/wsgiref/simple_server.pyi +37 -0
- jaclang/vendor/mypy/typeshed/stdlib/wsgiref/types.pyi +32 -0
- jaclang/vendor/mypy/typeshed/stdlib/wsgiref/util.pyi +24 -0
- jaclang/vendor/mypy/typeshed/stdlib/wsgiref/validate.pyi +50 -0
- jaclang/vendor/mypy/typeshed/stdlib/xdrlib.pyi +57 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/__init__.pyi +1 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/dom/NodeFilter.pyi +19 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/dom/__init__.pyi +69 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/dom/domreg.pyi +8 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/dom/expatbuilder.pyi +100 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minicompat.pyi +22 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minidom.pyi +404 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/dom/pulldom.pyi +94 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/dom/xmlbuilder.pyi +108 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementInclude.pyi +28 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementPath.pyi +34 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementTree.pyi +327 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/etree/__init__.pyi +0 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/etree/cElementTree.pyi +1 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/__init__.pyi +1 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/__init__.pyi +1 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/errors.pyi +1 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/model.pyi +1 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/sax/__init__.pyi +25 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/sax/_exceptions.pyi +19 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/sax/handler.pyi +55 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/sax/saxutils.pyi +60 -0
- jaclang/vendor/mypy/typeshed/stdlib/xml/sax/xmlreader.pyi +87 -0
- jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/__init__.pyi +0 -0
- jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/client.pyi +296 -0
- jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/server.pyi +143 -0
- jaclang/vendor/mypy/typeshed/stdlib/xxlimited.pyi +22 -0
- jaclang/vendor/mypy/typeshed/stdlib/zipapp.pyi +20 -0
- jaclang/vendor/mypy/typeshed/stdlib/zipfile/__init__.pyi +306 -0
- jaclang/vendor/mypy/typeshed/stdlib/zipfile/_path.pyi +95 -0
- jaclang/vendor/mypy/typeshed/stdlib/zipimport.pyi +32 -0
- jaclang/vendor/mypy/typeshed/stdlib/zlib.pyi +56 -0
- jaclang/vendor/mypy/typeshed/stdlib/zoneinfo/__init__.pyi +38 -0
- jaclang/vendor/mypy/typeshed/stubs/mypy-extensions/mypy_extensions.pyi +218 -0
- jaclang/vendor/mypy/typestate.py +5 -15
- jaclang/vendor/mypy/typetraverser.py +9 -3
- jaclang/vendor/mypy/typevars.py +2 -8
- jaclang/vendor/mypy/util.py +14 -45
- jaclang/vendor/mypy/version.py +1 -19
- jaclang/vendor/mypy/visitor.py +3 -9
- jaclang/vendor/mypy/xml/mypy-html.css +104 -0
- jaclang/vendor/mypy/xml/mypy-html.xslt +81 -0
- jaclang/vendor/mypy/xml/mypy-txt.xslt +100 -0
- jaclang/vendor/mypy/xml/mypy.xsd +50 -0
- jaclang/vendor/mypy-1.10.0.dist-info/LICENSE +229 -0
- jaclang/vendor/mypy-1.10.0.dist-info/METADATA +48 -0
- jaclang/vendor/mypy-1.10.0.dist-info/RECORD +1241 -0
- jaclang/vendor/mypy-1.10.0.dist-info/WHEEL +6 -0
- jaclang/vendor/mypy-1.10.0.dist-info/entry_points.txt +6 -0
- jaclang/vendor/mypy-1.10.0.dist-info/top_level.txt +3 -0
- jaclang/vendor/mypy_extensions-1.0.0.dist-info/LICENSE +27 -0
- jaclang/vendor/mypy_extensions-1.0.0.dist-info/METADATA +29 -0
- jaclang/vendor/mypy_extensions-1.0.0.dist-info/RECORD +6 -0
- jaclang/vendor/mypy_extensions-1.0.0.dist-info/WHEEL +5 -0
- jaclang/vendor/mypy_extensions-1.0.0.dist-info/top_level.txt +1 -0
- jaclang/vendor/mypy_extensions.py +21 -40
- jaclang/vendor/mypyc/README.md +133 -0
- jaclang/vendor/mypyc/__main__.py +1 -3
- jaclang/vendor/mypyc/analysis/attrdefined.py +6 -22
- jaclang/vendor/mypyc/analysis/dataflow.py +5 -3
- jaclang/vendor/mypyc/analysis/ircheck.py +13 -26
- jaclang/vendor/mypyc/analysis/selfleaks.py +4 -0
- jaclang/vendor/mypyc/build.py +6 -19
- jaclang/vendor/mypyc/codegen/emit.py +20 -73
- jaclang/vendor/mypyc/codegen/emitclass.py +22 -72
- jaclang/vendor/mypyc/codegen/emitfunc.py +20 -62
- jaclang/vendor/mypyc/codegen/emitmodule.py +50 -117
- jaclang/vendor/mypyc/codegen/emitwrapper.py +22 -78
- jaclang/vendor/mypyc/codegen/literals.py +1 -3
- jaclang/vendor/mypyc/common.py +1 -3
- jaclang/vendor/mypyc/doc/Makefile +20 -0
- jaclang/vendor/mypyc/doc/bool_operations.rst +27 -0
- jaclang/vendor/mypyc/doc/compilation_units.rst +20 -0
- jaclang/vendor/mypyc/doc/conf.py +59 -0
- jaclang/vendor/mypyc/doc/cpython-timings.md +25 -0
- jaclang/vendor/mypyc/doc/dev-intro.md +548 -0
- jaclang/vendor/mypyc/doc/dict_operations.rst +59 -0
- jaclang/vendor/mypyc/doc/differences_from_python.rst +332 -0
- jaclang/vendor/mypyc/doc/float_operations.rst +50 -0
- jaclang/vendor/mypyc/doc/future.md +42 -0
- jaclang/vendor/mypyc/doc/getting_started.rst +240 -0
- jaclang/vendor/mypyc/doc/index.rst +61 -0
- jaclang/vendor/mypyc/doc/int_operations.rst +162 -0
- jaclang/vendor/mypyc/doc/introduction.rst +150 -0
- jaclang/vendor/mypyc/doc/list_operations.rst +65 -0
- jaclang/vendor/mypyc/doc/make.bat +35 -0
- jaclang/vendor/mypyc/doc/native_classes.rst +206 -0
- jaclang/vendor/mypyc/doc/native_operations.rst +55 -0
- jaclang/vendor/mypyc/doc/performance_tips_and_tricks.rst +244 -0
- jaclang/vendor/mypyc/doc/set_operations.rst +47 -0
- jaclang/vendor/mypyc/doc/str_operations.rst +35 -0
- jaclang/vendor/mypyc/doc/tuple_operations.rst +33 -0
- jaclang/vendor/mypyc/doc/using_type_annotations.rst +398 -0
- jaclang/vendor/mypyc/external/googletest/LICENSE +28 -0
- jaclang/vendor/mypyc/external/googletest/README.md +280 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-death-test.h +294 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-message.h +250 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h +1444 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h.pump +510 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-printers.h +993 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-spi.h +232 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-test-part.h +179 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-typed-test.h +263 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/gtest.h +2236 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_pred_impl.h +358 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_prod.h +58 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-port.h +69 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-printers.h +42 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest.h +41 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-death-test-internal.h +319 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-filepath.h +206 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-internal.h +1238 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-linked_ptr.h +243 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h +5146 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +286 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util.h +731 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port-arch.h +93 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port.h +2560 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-string.h +167 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h +1020 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h.pump +347 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h +3331 -0
- jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h.pump +297 -0
- jaclang/vendor/mypyc/external/googletest/make/Makefile +61 -0
- jaclang/vendor/mypyc/external/googletest/src/gtest-all.cc +48 -0
- jaclang/vendor/mypyc/external/googletest/src/gtest-death-test.cc +1342 -0
- jaclang/vendor/mypyc/external/googletest/src/gtest-filepath.cc +387 -0
- jaclang/vendor/mypyc/external/googletest/src/gtest-internal-inl.h +1183 -0
- jaclang/vendor/mypyc/external/googletest/src/gtest-port.cc +1259 -0
- jaclang/vendor/mypyc/external/googletest/src/gtest-printers.cc +373 -0
- jaclang/vendor/mypyc/external/googletest/src/gtest-test-part.cc +110 -0
- jaclang/vendor/mypyc/external/googletest/src/gtest-typed-test.cc +118 -0
- jaclang/vendor/mypyc/external/googletest/src/gtest.cc +5388 -0
- jaclang/vendor/mypyc/external/googletest/src/gtest_main.cc +38 -0
- jaclang/vendor/mypyc/ir/class_ir.py +8 -24
- jaclang/vendor/mypyc/ir/func_ir.py +3 -16
- jaclang/vendor/mypyc/ir/module_ir.py +2 -6
- jaclang/vendor/mypyc/ir/ops.py +103 -66
- jaclang/vendor/mypyc/ir/pprint.py +35 -55
- jaclang/vendor/mypyc/ir/rtypes.py +16 -48
- jaclang/vendor/mypyc/irbuild/ast_helpers.py +4 -1
- jaclang/vendor/mypyc/irbuild/builder.py +46 -148
- jaclang/vendor/mypyc/irbuild/callable_class.py +5 -19
- jaclang/vendor/mypyc/irbuild/classdef.py +27 -83
- jaclang/vendor/mypyc/irbuild/env_class.py +3 -9
- jaclang/vendor/mypyc/irbuild/expression.py +42 -100
- jaclang/vendor/mypyc/irbuild/for_helpers.py +56 -105
- jaclang/vendor/mypyc/irbuild/format_str_tokenizer.py +1 -4
- jaclang/vendor/mypyc/irbuild/function.py +40 -132
- jaclang/vendor/mypyc/irbuild/generator.py +14 -49
- jaclang/vendor/mypyc/irbuild/ll_builder.py +197 -426
- jaclang/vendor/mypyc/irbuild/mapper.py +2 -13
- jaclang/vendor/mypyc/irbuild/match.py +11 -36
- jaclang/vendor/mypyc/irbuild/nonlocalcontrol.py +2 -7
- jaclang/vendor/mypyc/irbuild/prebuildvisitor.py +1 -4
- jaclang/vendor/mypyc/irbuild/prepare.py +25 -83
- jaclang/vendor/mypyc/irbuild/specialize.py +22 -72
- jaclang/vendor/mypyc/irbuild/statement.py +30 -96
- jaclang/vendor/mypyc/irbuild/targets.py +1 -3
- jaclang/vendor/mypyc/irbuild/util.py +2 -8
- jaclang/vendor/mypyc/irbuild/vtable.py +1 -3
- jaclang/vendor/mypyc/lib-rt/CPy.h +638 -0
- jaclang/vendor/mypyc/lib-rt/bytes_ops.c +143 -0
- jaclang/vendor/mypyc/lib-rt/dict_ops.c +446 -0
- jaclang/vendor/mypyc/lib-rt/exc_ops.c +259 -0
- jaclang/vendor/mypyc/lib-rt/float_ops.c +192 -0
- jaclang/vendor/mypyc/lib-rt/generic_ops.c +64 -0
- jaclang/vendor/mypyc/lib-rt/getargs.c +450 -0
- jaclang/vendor/mypyc/lib-rt/getargsfast.c +569 -0
- jaclang/vendor/mypyc/lib-rt/init.c +13 -0
- jaclang/vendor/mypyc/lib-rt/int_ops.c +803 -0
- jaclang/vendor/mypyc/lib-rt/list_ops.c +335 -0
- jaclang/vendor/mypyc/lib-rt/misc_ops.c +942 -0
- jaclang/vendor/mypyc/lib-rt/module_shim.tmpl +18 -0
- jaclang/vendor/mypyc/lib-rt/mypyc_util.h +118 -0
- jaclang/vendor/mypyc/lib-rt/pythoncapi_compat.h +497 -0
- jaclang/vendor/mypyc/lib-rt/pythonsupport.h +533 -0
- jaclang/vendor/mypyc/lib-rt/set_ops.c +17 -0
- jaclang/vendor/mypyc/lib-rt/setup.py +70 -0
- jaclang/vendor/mypyc/lib-rt/str_ops.c +241 -0
- jaclang/vendor/mypyc/lib-rt/test_capi.cc +585 -0
- jaclang/vendor/mypyc/lib-rt/tuple_ops.c +61 -0
- jaclang/vendor/mypyc/lower/__init__.py +0 -0
- jaclang/vendor/mypyc/lower/int_ops.py +113 -0
- jaclang/vendor/mypyc/lower/list_ops.py +45 -0
- jaclang/vendor/mypyc/lower/misc_ops.py +12 -0
- jaclang/vendor/mypyc/lower/registry.py +26 -0
- jaclang/vendor/mypyc/options.py +1 -3
- jaclang/vendor/mypyc/primitives/dict_ops.py +1 -4
- jaclang/vendor/mypyc/primitives/exc_ops.py +3 -12
- jaclang/vendor/mypyc/primitives/int_ops.py +22 -32
- jaclang/vendor/mypyc/primitives/list_ops.py +10 -0
- jaclang/vendor/mypyc/primitives/misc_ops.py +28 -22
- jaclang/vendor/mypyc/primitives/registry.py +56 -19
- jaclang/vendor/mypyc/primitives/set_ops.py +1 -3
- jaclang/vendor/mypyc/rt_subtype.py +1 -2
- jaclang/vendor/mypyc/sametype.py +2 -5
- jaclang/vendor/mypyc/subtype.py +3 -12
- jaclang/vendor/mypyc/test/test_alwaysdefined.py +2 -6
- jaclang/vendor/mypyc/test/test_analysis.py +8 -24
- jaclang/vendor/mypyc/test/test_cheader.py +12 -4
- jaclang/vendor/mypyc/test/test_emit.py +4 -14
- jaclang/vendor/mypyc/test/test_emitclass.py +1 -8
- jaclang/vendor/mypyc/test/test_emitfunc.py +30 -77
- jaclang/vendor/mypyc/test/test_emitwrapper.py +1 -3
- jaclang/vendor/mypyc/test/test_exceptions.py +4 -12
- jaclang/vendor/mypyc/test/test_external.py +1 -5
- jaclang/vendor/mypyc/test/test_irbuild.py +2 -6
- jaclang/vendor/mypyc/test/test_ircheck.py +6 -17
- jaclang/vendor/mypyc/test/test_literals.py +1 -4
- jaclang/vendor/mypyc/test/test_lowering.py +56 -0
- jaclang/vendor/mypyc/test/test_namegen.py +1 -4
- jaclang/vendor/mypyc/test/test_optimizations.py +68 -0
- jaclang/vendor/mypyc/test/test_refcount.py +3 -9
- jaclang/vendor/mypyc/test/test_run.py +12 -38
- jaclang/vendor/mypyc/test/test_serialization.py +1 -3
- jaclang/vendor/mypyc/test/test_struct.py +3 -11
- jaclang/vendor/mypyc/test/test_tuplename.py +4 -13
- jaclang/vendor/mypyc/test/test_typeops.py +1 -4
- jaclang/vendor/mypyc/test/testutil.py +2 -6
- jaclang/vendor/mypyc/test-data/alwaysdefined.test +732 -0
- jaclang/vendor/mypyc/test-data/analysis.test +470 -0
- jaclang/vendor/mypyc/test-data/commandline.test +245 -0
- jaclang/vendor/mypyc/test-data/driver/driver.py +48 -0
- jaclang/vendor/mypyc/test-data/exceptions-freq.test +125 -0
- jaclang/vendor/mypyc/test-data/exceptions.test +699 -0
- jaclang/vendor/mypyc/test-data/fixtures/ir.py +373 -0
- jaclang/vendor/mypyc/test-data/fixtures/testutil.py +103 -0
- jaclang/vendor/mypyc/test-data/fixtures/typing-full.pyi +169 -0
- jaclang/vendor/mypyc/test-data/irbuild-any.test +236 -0
- jaclang/vendor/mypyc/test-data/irbuild-basic.test +3399 -0
- jaclang/vendor/mypyc/test-data/irbuild-bool.test +424 -0
- jaclang/vendor/mypyc/test-data/irbuild-bytes.test +181 -0
- jaclang/vendor/mypyc/test-data/irbuild-classes.test +1302 -0
- jaclang/vendor/mypyc/test-data/irbuild-constant-fold.test +480 -0
- jaclang/vendor/mypyc/test-data/irbuild-dict.test +584 -0
- jaclang/vendor/mypyc/test-data/irbuild-dunders.test +215 -0
- jaclang/vendor/mypyc/test-data/irbuild-float.test +497 -0
- jaclang/vendor/mypyc/test-data/irbuild-generics.test +150 -0
- jaclang/vendor/mypyc/test-data/irbuild-glue-methods.test +437 -0
- jaclang/vendor/mypyc/test-data/irbuild-i16.test +526 -0
- jaclang/vendor/mypyc/test-data/irbuild-i32.test +598 -0
- jaclang/vendor/mypyc/test-data/irbuild-i64.test +2144 -0
- jaclang/vendor/mypyc/test-data/irbuild-int.test +194 -0
- jaclang/vendor/mypyc/test-data/irbuild-isinstance.test +109 -0
- jaclang/vendor/mypyc/test-data/irbuild-lists.test +513 -0
- jaclang/vendor/mypyc/test-data/irbuild-match.test +1717 -0
- jaclang/vendor/mypyc/test-data/irbuild-math.test +64 -0
- jaclang/vendor/mypyc/test-data/irbuild-nested.test +807 -0
- jaclang/vendor/mypyc/test-data/irbuild-optional.test +536 -0
- jaclang/vendor/mypyc/test-data/irbuild-set.test +806 -0
- jaclang/vendor/mypyc/test-data/irbuild-singledispatch.test +257 -0
- jaclang/vendor/mypyc/test-data/irbuild-statements.test +1060 -0
- jaclang/vendor/mypyc/test-data/irbuild-str.test +312 -0
- jaclang/vendor/mypyc/test-data/irbuild-strip-asserts.test +12 -0
- jaclang/vendor/mypyc/test-data/irbuild-try.test +523 -0
- jaclang/vendor/mypyc/test-data/irbuild-tuple.test +386 -0
- jaclang/vendor/mypyc/test-data/irbuild-u8.test +543 -0
- jaclang/vendor/mypyc/test-data/irbuild-unreachable.test +241 -0
- jaclang/vendor/mypyc/test-data/irbuild-vectorcall.test +153 -0
- jaclang/vendor/mypyc/test-data/lowering-int.test +377 -0
- jaclang/vendor/mypyc/test-data/lowering-list.test +33 -0
- jaclang/vendor/mypyc/test-data/opt-copy-propagation.test +400 -0
- jaclang/vendor/mypyc/test-data/opt-flag-elimination.test +296 -0
- jaclang/vendor/mypyc/test-data/refcount.test +1482 -0
- jaclang/vendor/mypyc/test-data/run-async.test +173 -0
- jaclang/vendor/mypyc/test-data/run-attrs.test +318 -0
- jaclang/vendor/mypyc/test-data/run-bench.test +196 -0
- jaclang/vendor/mypyc/test-data/run-bools.test +229 -0
- jaclang/vendor/mypyc/test-data/run-bytes.test +302 -0
- jaclang/vendor/mypyc/test-data/run-classes.test +2505 -0
- jaclang/vendor/mypyc/test-data/run-dicts.test +334 -0
- jaclang/vendor/mypyc/test-data/run-dunders.test +945 -0
- jaclang/vendor/mypyc/test-data/run-exceptions.test +448 -0
- jaclang/vendor/mypyc/test-data/run-floats.test +516 -0
- jaclang/vendor/mypyc/test-data/run-functions.test +1310 -0
- jaclang/vendor/mypyc/test-data/run-generators.test +682 -0
- jaclang/vendor/mypyc/test-data/run-i16.test +338 -0
- jaclang/vendor/mypyc/test-data/run-i32.test +336 -0
- jaclang/vendor/mypyc/test-data/run-i64.test +1519 -0
- jaclang/vendor/mypyc/test-data/run-imports.test +265 -0
- jaclang/vendor/mypyc/test-data/run-integers.test +540 -0
- jaclang/vendor/mypyc/test-data/run-lists.test +411 -0
- jaclang/vendor/mypyc/test-data/run-loops.test +485 -0
- jaclang/vendor/mypyc/test-data/run-match.test +283 -0
- jaclang/vendor/mypyc/test-data/run-math.test +106 -0
- jaclang/vendor/mypyc/test-data/run-misc.test +1170 -0
- jaclang/vendor/mypyc/test-data/run-multimodule.test +887 -0
- jaclang/vendor/mypyc/test-data/run-mypy-sim.test +138 -0
- jaclang/vendor/mypyc/test-data/run-primitives.test +375 -0
- jaclang/vendor/mypyc/test-data/run-python37.test +159 -0
- jaclang/vendor/mypyc/test-data/run-python38.test +88 -0
- jaclang/vendor/mypyc/test-data/run-sets.test +150 -0
- jaclang/vendor/mypyc/test-data/run-singledispatch.test +698 -0
- jaclang/vendor/mypyc/test-data/run-strings.test +641 -0
- jaclang/vendor/mypyc/test-data/run-traits.test +411 -0
- jaclang/vendor/mypyc/test-data/run-tuples.test +258 -0
- jaclang/vendor/mypyc/test-data/run-u8.test +303 -0
- jaclang/vendor/mypyc/transform/copy_propagation.py +94 -0
- jaclang/vendor/mypyc/transform/exceptions.py +1 -5
- jaclang/vendor/mypyc/transform/flag_elimination.py +108 -0
- jaclang/vendor/mypyc/transform/ir_transform.py +368 -0
- jaclang/vendor/mypyc/transform/lower.py +33 -0
- jaclang/vendor/mypyc/transform/refcount.py +7 -30
- jaclang/vendor/mypyc/transform/uninit.py +4 -15
- jaclang/vendor/pluggy/__init__.py +15 -11
- jaclang/vendor/pluggy/_callers.py +34 -5
- jaclang/vendor/pluggy/_hooks.py +35 -7
- jaclang/vendor/pluggy/_manager.py +26 -3
- jaclang/vendor/pluggy/_result.py +0 -15
- jaclang/vendor/pluggy/_version.py +16 -0
- jaclang/vendor/pluggy/_warnings.py +27 -0
- jaclang/vendor/pluggy-1.5.0.dist-info/LICENSE +21 -0
- jaclang/vendor/pluggy-1.5.0.dist-info/METADATA +155 -0
- jaclang/vendor/pluggy-1.5.0.dist-info/RECORD +14 -0
- jaclang/vendor/pluggy-1.5.0.dist-info/top_level.txt +1 -0
- jaclang/vendor/pygls/__init__.py +25 -0
- jaclang/vendor/pygls/capabilities.py +460 -0
- jaclang/vendor/pygls/client.py +176 -0
- jaclang/vendor/pygls/constants.py +26 -0
- jaclang/vendor/pygls/exceptions.py +215 -0
- jaclang/vendor/pygls/feature_manager.py +244 -0
- jaclang/vendor/pygls/lsp/__init__.py +139 -0
- jaclang/vendor/pygls/lsp/client.py +1961 -0
- jaclang/vendor/pygls/progress.py +79 -0
- jaclang/vendor/pygls/protocol/__init__.py +78 -0
- jaclang/vendor/pygls/protocol/json_rpc.py +560 -0
- jaclang/vendor/pygls/protocol/language_server.py +569 -0
- jaclang/vendor/pygls/protocol/lsp_meta.py +51 -0
- jaclang/vendor/pygls/py.typed +2 -0
- jaclang/vendor/pygls/server.py +616 -0
- jaclang/vendor/pygls/uris.py +184 -0
- jaclang/vendor/pygls/workspace/__init__.py +97 -0
- jaclang/vendor/pygls/workspace/position_codec.py +206 -0
- jaclang/vendor/pygls/workspace/text_document.py +238 -0
- jaclang/vendor/pygls/workspace/workspace.py +323 -0
- jaclang/vendor/pygls-1.3.1.dist-info/LICENSE.txt +201 -0
- jaclang/vendor/pygls-1.3.1.dist-info/METADATA +105 -0
- jaclang/vendor/pygls-1.3.1.dist-info/RECORD +24 -0
- jaclang/vendor/pygls-1.3.1.dist-info/WHEEL +4 -0
- jaclang/vendor/typing_extensions-4.12.2.dist-info/LICENSE +279 -0
- jaclang/vendor/typing_extensions-4.12.2.dist-info/METADATA +67 -0
- jaclang/vendor/typing_extensions-4.12.2.dist-info/RECORD +5 -0
- jaclang/vendor/typing_extensions-4.12.2.dist-info/WHEEL +4 -0
- jaclang/vendor/typing_extensions.py +1209 -641
- jaclang-0.7.0.dist-info/METADATA +98 -0
- jaclang-0.7.0.dist-info/RECORD +1475 -0
- jaclang-0.7.0.dist-info/WHEEL +4 -0
- jaclang-0.7.0.dist-info/entry_points.txt +3 -0
- jaclang/compiler/generated/jac_parser.py +0 -4069
- jaclang/compiler/tests/test_workspace.py +0 -93
- jaclang/compiler/workspace.py +0 -234
- jaclang-0.6.1.dist-info/METADATA +0 -17
- jaclang-0.6.1.dist-info/RECORD +0 -430
- jaclang-0.6.1.dist-info/entry_points.txt +0 -2
- jaclang-0.6.1.dist-info/top_level.txt +0 -1
- /jaclang/{compiler/generated/__init__.py → vendor/attr/py.typed} +0 -0
- {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
|
|
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
|
-
|
|
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
|
-
|
|
392
|
-
)
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
1549
|
-
target = self.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
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
|
|
2158
|
-
)
|
|
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
|
|
2169
|
-
self,
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|