jaclang 0.6.0__py3-none-any.whl → 0.6.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of jaclang might be problematic. Click here for more details.
- jaclang/__init__.py +1 -9
- jaclang/cli/.gitignore +3 -0
- jaclang/cli/cli.md +190 -0
- jaclang/cli/cli.py +115 -7
- jaclang/cli/cmdreg.py +18 -6
- jaclang/compiler/.gitignore +1 -0
- jaclang/compiler/__init__.py +1 -0
- jaclang/compiler/absyntree.py +8 -9
- jaclang/compiler/compile.py +4 -4
- jaclang/compiler/jac.lark +1 -0
- jaclang/compiler/parser.py +16 -3
- jaclang/compiler/passes/main/def_impl_match_pass.py +8 -1
- jaclang/compiler/passes/main/fuse_typeinfo_pass.py +20 -8
- jaclang/compiler/passes/main/import_pass.py +78 -47
- jaclang/compiler/passes/main/pyast_gen_pass.py +6 -57
- jaclang/compiler/passes/main/pyast_load_pass.py +33 -6
- jaclang/compiler/passes/main/pyjac_ast_link_pass.py +218 -0
- jaclang/compiler/passes/main/schedules.py +2 -0
- jaclang/compiler/passes/main/sym_tab_build_pass.py +9 -3
- 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_import_pass.py +11 -0
- jaclang/compiler/passes/main/tests/test_type_check_pass.py +15 -0
- 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/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 +1 -0
- jaclang/compiler/tests/fixtures/staticcheck.jac +20 -0
- jaclang/compiler/tests/fixtures/stuff.jac +6 -0
- jaclang/core/aott.py +10 -1
- jaclang/core/construct.py +157 -21
- jaclang/core/importer.py +6 -2
- jaclang/core/memory.py +48 -0
- jaclang/core/shelve_storage.py +55 -0
- jaclang/langserve/__init__.py +1 -0
- jaclang/langserve/server.py +108 -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 +53 -0
- jaclang/plugin/__init__.py +1 -2
- jaclang/plugin/builtin.py +1 -1
- jaclang/plugin/default.py +97 -4
- jaclang/plugin/feature.py +28 -9
- jaclang/plugin/spec.py +45 -10
- 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/plugin/tests/test_jaseci.py +219 -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 +17 -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.6.5.dist-info/METADATA +106 -0
- jaclang-0.6.5.dist-info/RECORD +1476 -0
- jaclang-0.6.5.dist-info/WHEEL +4 -0
- jaclang-0.6.5.dist-info/entry_points.txt +3 -0
- jaclang/compiler/generated/jac_parser.py +0 -4069
- jaclang-0.6.0.dist-info/METADATA +0 -17
- jaclang-0.6.0.dist-info/RECORD +0 -426
- jaclang-0.6.0.dist-info/entry_points.txt +0 -2
- jaclang-0.6.0.dist-info/top_level.txt +0 -1
- /jaclang/{compiler/generated/__init__.py → vendor/attr/py.typed} +0 -0
- {jaclang-0.6.0.dist-info → jaclang/vendor/pluggy-1.5.0.dist-info}/WHEEL +0 -0
jaclang/vendor/mypy/messages.py
CHANGED
|
@@ -16,17 +16,7 @@ import itertools
|
|
|
16
16
|
import re
|
|
17
17
|
from contextlib import contextmanager
|
|
18
18
|
from textwrap import dedent
|
|
19
|
-
from typing import
|
|
20
|
-
Any,
|
|
21
|
-
Callable,
|
|
22
|
-
Collection,
|
|
23
|
-
Final,
|
|
24
|
-
Iterable,
|
|
25
|
-
Iterator,
|
|
26
|
-
List,
|
|
27
|
-
Sequence,
|
|
28
|
-
cast,
|
|
29
|
-
)
|
|
19
|
+
from typing import Any, Callable, Collection, Final, Iterable, Iterator, List, Sequence, cast
|
|
30
20
|
|
|
31
21
|
import mypy.typeops
|
|
32
22
|
from mypy import errorcodes as codes, message_registry
|
|
@@ -192,9 +182,7 @@ class MessageBuilder:
|
|
|
192
182
|
save_filtered_errors: bool = False,
|
|
193
183
|
) -> ErrorWatcher:
|
|
194
184
|
return ErrorWatcher(
|
|
195
|
-
self.errors,
|
|
196
|
-
filter_errors=filter_errors,
|
|
197
|
-
save_filtered_errors=save_filtered_errors,
|
|
185
|
+
self.errors, filter_errors=filter_errors, save_filtered_errors=save_filtered_errors
|
|
198
186
|
)
|
|
199
187
|
|
|
200
188
|
def add_errors(self, errors: list[ErrorInfo]) -> None:
|
|
@@ -266,9 +254,7 @@ class MessageBuilder:
|
|
|
266
254
|
|
|
267
255
|
if secondary_context is not None:
|
|
268
256
|
assert origin_span is not None
|
|
269
|
-
origin_span = itertools.chain(
|
|
270
|
-
origin_span, span_from_context(secondary_context)
|
|
271
|
-
)
|
|
257
|
+
origin_span = itertools.chain(origin_span, span_from_context(secondary_context))
|
|
272
258
|
|
|
273
259
|
self.errors.report(
|
|
274
260
|
context.line if context else -1,
|
|
@@ -389,9 +375,7 @@ class MessageBuilder:
|
|
|
389
375
|
original_type = get_proper_type(original_type)
|
|
390
376
|
typ = get_proper_type(typ)
|
|
391
377
|
|
|
392
|
-
if isinstance(
|
|
393
|
-
original_type, Instance
|
|
394
|
-
) and original_type.type.has_readable_member(member):
|
|
378
|
+
if isinstance(original_type, Instance) and original_type.type.has_readable_member(member):
|
|
395
379
|
self.fail(f'Member "{member}" is not assignable', context)
|
|
396
380
|
return None
|
|
397
381
|
elif member == "__contains__":
|
|
@@ -463,15 +447,11 @@ class MessageBuilder:
|
|
|
463
447
|
):
|
|
464
448
|
# "'function' not callable" is a confusing error message.
|
|
465
449
|
# Explain that the problem is that the type of the function is not known.
|
|
466
|
-
self.fail(
|
|
467
|
-
"Cannot call function of unknown type", context, code=codes.OPERATOR
|
|
468
|
-
)
|
|
450
|
+
self.fail("Cannot call function of unknown type", context, code=codes.OPERATOR)
|
|
469
451
|
return codes.OPERATOR
|
|
470
452
|
else:
|
|
471
453
|
self.fail(
|
|
472
|
-
message_registry.NOT_CALLABLE.format(
|
|
473
|
-
format_type(original_type, self.options)
|
|
474
|
-
),
|
|
454
|
+
message_registry.NOT_CALLABLE.format(format_type(original_type, self.options)),
|
|
475
455
|
context,
|
|
476
456
|
code=codes.OPERATOR,
|
|
477
457
|
)
|
|
@@ -502,18 +482,12 @@ class MessageBuilder:
|
|
|
502
482
|
alternatives = set(original_type.type.names.keys())
|
|
503
483
|
if module_symbol_table is not None:
|
|
504
484
|
alternatives |= {
|
|
505
|
-
k
|
|
506
|
-
for k, v in module_symbol_table.items()
|
|
507
|
-
if v.module_public
|
|
485
|
+
k for k, v in module_symbol_table.items() if v.module_public
|
|
508
486
|
}
|
|
509
487
|
# Rare but possible, see e.g. testNewAnalyzerCyclicDefinitionCrossModule
|
|
510
488
|
alternatives.discard(member)
|
|
511
489
|
|
|
512
|
-
matches = [
|
|
513
|
-
m
|
|
514
|
-
for m in COMMON_MISTAKES.get(member, [])
|
|
515
|
-
if m in alternatives
|
|
516
|
-
]
|
|
490
|
+
matches = [m for m in COMMON_MISTAKES.get(member, []) if m in alternatives]
|
|
517
491
|
matches.extend(best_matches(member, alternatives, n=3))
|
|
518
492
|
if member == "__aiter__" and matches == ["__iter__"]:
|
|
519
493
|
matches = [] # Avoid misleading suggestion
|
|
@@ -559,9 +533,7 @@ class MessageBuilder:
|
|
|
559
533
|
elif isinstance(original_type, TypeVarType):
|
|
560
534
|
bound = get_proper_type(original_type.upper_bound)
|
|
561
535
|
if isinstance(bound, UnionType):
|
|
562
|
-
typ_fmt, bound_fmt = format_type_distinctly(
|
|
563
|
-
typ, bound, options=self.options
|
|
564
|
-
)
|
|
536
|
+
typ_fmt, bound_fmt = format_type_distinctly(typ, bound, options=self.options)
|
|
565
537
|
original_type_fmt = format_type(original_type, self.options)
|
|
566
538
|
self.fail(
|
|
567
539
|
"Item {} of the upper bound {} of type variable {} has no "
|
|
@@ -622,10 +594,7 @@ class MessageBuilder:
|
|
|
622
594
|
self.fail(msg, context, code=codes.OPERATOR)
|
|
623
595
|
|
|
624
596
|
def not_callable(self, typ: Type, context: Context) -> Type:
|
|
625
|
-
self.fail(
|
|
626
|
-
message_registry.NOT_CALLABLE.format(format_type(typ, self.options)),
|
|
627
|
-
context,
|
|
628
|
-
)
|
|
597
|
+
self.fail(message_registry.NOT_CALLABLE.format(format_type(typ, self.options)), context)
|
|
629
598
|
return AnyType(TypeOfAny.from_error)
|
|
630
599
|
|
|
631
600
|
def untyped_function_call(self, callee: CallableType, context: Context) -> Type:
|
|
@@ -693,11 +662,7 @@ class MessageBuilder:
|
|
|
693
662
|
if name.startswith('"__setitem__" of'):
|
|
694
663
|
if n == 1:
|
|
695
664
|
self.invalid_index_type(
|
|
696
|
-
arg_type,
|
|
697
|
-
callee.arg_types[n - 1],
|
|
698
|
-
base,
|
|
699
|
-
context,
|
|
700
|
-
code=codes.INDEX,
|
|
665
|
+
arg_type, callee.arg_types[n - 1], base, context, code=codes.INDEX
|
|
701
666
|
)
|
|
702
667
|
return codes.INDEX
|
|
703
668
|
else:
|
|
@@ -708,8 +673,8 @@ class MessageBuilder:
|
|
|
708
673
|
f" (expression has type {arg_type_str}, "
|
|
709
674
|
f"target has type {callee_type_str})"
|
|
710
675
|
)
|
|
711
|
-
error_msg =
|
|
712
|
-
info
|
|
676
|
+
error_msg = (
|
|
677
|
+
message_registry.INCOMPATIBLE_TYPES_IN_ASSIGNMENT.with_additional_msg(info)
|
|
713
678
|
)
|
|
714
679
|
self.fail(error_msg.value, context, code=error_msg.code)
|
|
715
680
|
return error_msg.code
|
|
@@ -735,9 +700,7 @@ class MessageBuilder:
|
|
|
735
700
|
name = callee_name[1:-1]
|
|
736
701
|
n -= 1
|
|
737
702
|
key_type, value_type = cast(TupleType, arg_type).items
|
|
738
|
-
expected_key_type, expected_value_type = cast(
|
|
739
|
-
TupleType, callee.arg_types[n]
|
|
740
|
-
).items
|
|
703
|
+
expected_key_type, expected_value_type = cast(TupleType, callee.arg_types[n]).items
|
|
741
704
|
|
|
742
705
|
# don't increase verbosity unless there is need to do so
|
|
743
706
|
if is_subtype(key_type, expected_key_type):
|
|
@@ -775,9 +738,7 @@ class MessageBuilder:
|
|
|
775
738
|
elif callee_name == "<list-comprehension>":
|
|
776
739
|
actual_type_str, expected_type_str = map(
|
|
777
740
|
strip_quotes,
|
|
778
|
-
format_type_distinctly(
|
|
779
|
-
arg_type, callee.arg_types[0], options=self.options
|
|
780
|
-
),
|
|
741
|
+
format_type_distinctly(arg_type, callee.arg_types[0], options=self.options),
|
|
781
742
|
)
|
|
782
743
|
msg = "List comprehension has incompatible type List[{}]; expected List[{}]".format(
|
|
783
744
|
actual_type_str, expected_type_str
|
|
@@ -785,9 +746,7 @@ class MessageBuilder:
|
|
|
785
746
|
elif callee_name == "<set-comprehension>":
|
|
786
747
|
actual_type_str, expected_type_str = map(
|
|
787
748
|
strip_quotes,
|
|
788
|
-
format_type_distinctly(
|
|
789
|
-
arg_type, callee.arg_types[0], options=self.options
|
|
790
|
-
),
|
|
749
|
+
format_type_distinctly(arg_type, callee.arg_types[0], options=self.options),
|
|
791
750
|
)
|
|
792
751
|
msg = "Set comprehension has incompatible type Set[{}]; expected Set[{}]".format(
|
|
793
752
|
actual_type_str, expected_type_str
|
|
@@ -826,10 +785,7 @@ class MessageBuilder:
|
|
|
826
785
|
# For function calls with keyword arguments, display the argument name rather
|
|
827
786
|
# than the number.
|
|
828
787
|
arg_label = str(n)
|
|
829
|
-
if (
|
|
830
|
-
isinstance(outer_context, CallExpr)
|
|
831
|
-
and len(outer_context.arg_names) >= n
|
|
832
|
-
):
|
|
788
|
+
if isinstance(outer_context, CallExpr) and len(outer_context.arg_names) >= n:
|
|
833
789
|
arg_name = outer_context.arg_names[n - 1]
|
|
834
790
|
if arg_name is not None:
|
|
835
791
|
arg_label = f'"{arg_name}"'
|
|
@@ -843,10 +799,7 @@ class MessageBuilder:
|
|
|
843
799
|
arg_name = callee.arg_names[m - 1]
|
|
844
800
|
assert arg_name is not None
|
|
845
801
|
arg_type_str, expected_type_str = format_type_distinctly(
|
|
846
|
-
arg_type.items[arg_name],
|
|
847
|
-
expected_type,
|
|
848
|
-
bare=True,
|
|
849
|
-
options=self.options,
|
|
802
|
+
arg_type.items[arg_name], expected_type, bare=True, options=self.options
|
|
850
803
|
)
|
|
851
804
|
arg_label = f'"{arg_name}"'
|
|
852
805
|
if isinstance(outer_context, IndexExpr) and isinstance(
|
|
@@ -894,8 +847,7 @@ class MessageBuilder:
|
|
|
894
847
|
if self.prefer_simple_messages():
|
|
895
848
|
return
|
|
896
849
|
if isinstance(
|
|
897
|
-
original_caller_type,
|
|
898
|
-
(Instance, TupleType, TypedDictType, TypeType, CallableType),
|
|
850
|
+
original_caller_type, (Instance, TupleType, TypedDictType, TypeType, CallableType)
|
|
899
851
|
):
|
|
900
852
|
if isinstance(callee_type, Instance) and callee_type.type.is_protocol:
|
|
901
853
|
self.report_protocol_problems(
|
|
@@ -908,18 +860,14 @@ class MessageBuilder:
|
|
|
908
860
|
self.report_protocol_problems(
|
|
909
861
|
original_caller_type, item, context, code=code
|
|
910
862
|
)
|
|
911
|
-
if isinstance(callee_type, CallableType) and isinstance(
|
|
912
|
-
original_caller_type, Instance
|
|
913
|
-
):
|
|
863
|
+
if isinstance(callee_type, CallableType) and isinstance(original_caller_type, Instance):
|
|
914
864
|
call = find_member(
|
|
915
865
|
"__call__", original_caller_type, original_caller_type, is_operator=True
|
|
916
866
|
)
|
|
917
867
|
if call:
|
|
918
868
|
self.note_call(original_caller_type, call, context, code=code)
|
|
919
869
|
|
|
920
|
-
self.maybe_note_concatenate_pos_args(
|
|
921
|
-
original_caller_type, callee_type, context, code
|
|
922
|
-
)
|
|
870
|
+
self.maybe_note_concatenate_pos_args(original_caller_type, callee_type, context, code)
|
|
923
871
|
|
|
924
872
|
def maybe_note_concatenate_pos_args(
|
|
925
873
|
self,
|
|
@@ -974,10 +922,7 @@ class MessageBuilder:
|
|
|
974
922
|
)
|
|
975
923
|
|
|
976
924
|
def too_few_arguments(
|
|
977
|
-
self,
|
|
978
|
-
callee: CallableType,
|
|
979
|
-
context: Context,
|
|
980
|
-
argument_names: Sequence[str | None] | None,
|
|
925
|
+
self, callee: CallableType, context: Context, argument_names: Sequence[str | None] | None
|
|
981
926
|
) -> None:
|
|
982
927
|
if self.prefer_simple_messages():
|
|
983
928
|
msg = "Too few arguments"
|
|
@@ -1000,9 +945,7 @@ class MessageBuilder:
|
|
|
1000
945
|
msg = "Too few arguments" + for_function(callee)
|
|
1001
946
|
self.fail(msg, context, code=codes.CALL_ARG)
|
|
1002
947
|
|
|
1003
|
-
def missing_named_argument(
|
|
1004
|
-
self, callee: CallableType, context: Context, name: str
|
|
1005
|
-
) -> None:
|
|
948
|
+
def missing_named_argument(self, callee: CallableType, context: Context, name: str) -> None:
|
|
1006
949
|
msg = f'Missing named argument "{name}"' + for_function(callee)
|
|
1007
950
|
self.fail(msg, context, code=codes.CALL_ARG)
|
|
1008
951
|
|
|
@@ -1027,9 +970,7 @@ class MessageBuilder:
|
|
|
1027
970
|
return
|
|
1028
971
|
self.fail(msg, context)
|
|
1029
972
|
|
|
1030
|
-
def too_many_positional_arguments(
|
|
1031
|
-
self, callee: CallableType, context: Context
|
|
1032
|
-
) -> None:
|
|
973
|
+
def too_many_positional_arguments(self, callee: CallableType, context: Context) -> None:
|
|
1033
974
|
if self.prefer_simple_messages():
|
|
1034
975
|
msg = "Too many positional arguments"
|
|
1035
976
|
else:
|
|
@@ -1037,9 +978,7 @@ class MessageBuilder:
|
|
|
1037
978
|
self.fail(msg, context)
|
|
1038
979
|
self.maybe_note_about_special_args(callee, context)
|
|
1039
980
|
|
|
1040
|
-
def maybe_note_about_special_args(
|
|
1041
|
-
self, callee: CallableType, context: Context
|
|
1042
|
-
) -> None:
|
|
981
|
+
def maybe_note_about_special_args(self, callee: CallableType, context: Context) -> None:
|
|
1043
982
|
if self.prefer_simple_messages():
|
|
1044
983
|
return
|
|
1045
984
|
# https://github.com/python/mypy/issues/11309
|
|
@@ -1053,12 +992,7 @@ class MessageBuilder:
|
|
|
1053
992
|
)
|
|
1054
993
|
|
|
1055
994
|
def unexpected_keyword_argument_for_function(
|
|
1056
|
-
self,
|
|
1057
|
-
for_func: str,
|
|
1058
|
-
name: str,
|
|
1059
|
-
context: Context,
|
|
1060
|
-
*,
|
|
1061
|
-
matches: list[str] | None = None,
|
|
995
|
+
self, for_func: str, name: str, context: Context, *, matches: list[str] | None = None
|
|
1062
996
|
) -> None:
|
|
1063
997
|
msg = f'Unexpected keyword argument "{name}"' + for_func
|
|
1064
998
|
if matches:
|
|
@@ -1098,9 +1032,7 @@ class MessageBuilder:
|
|
|
1098
1032
|
code=codes.CALL_ARG,
|
|
1099
1033
|
)
|
|
1100
1034
|
|
|
1101
|
-
def duplicate_argument_value(
|
|
1102
|
-
self, callee: CallableType, index: int, context: Context
|
|
1103
|
-
) -> None:
|
|
1035
|
+
def duplicate_argument_value(self, callee: CallableType, index: int, context: Context) -> None:
|
|
1104
1036
|
self.fail(
|
|
1105
1037
|
'{} gets multiple values for keyword argument "{}"'.format(
|
|
1106
1038
|
callable_name(callee) or "Function", callee.arg_names[index]
|
|
@@ -1111,11 +1043,7 @@ class MessageBuilder:
|
|
|
1111
1043
|
def does_not_return_value(self, callee_type: Type | None, context: Context) -> None:
|
|
1112
1044
|
"""Report an error about use of an unusable type."""
|
|
1113
1045
|
callee_type = get_proper_type(callee_type)
|
|
1114
|
-
callee_name = (
|
|
1115
|
-
callable_name(callee_type)
|
|
1116
|
-
if isinstance(callee_type, FunctionLike)
|
|
1117
|
-
else None
|
|
1118
|
-
)
|
|
1046
|
+
callee_name = callable_name(callee_type) if isinstance(callee_type, FunctionLike) else None
|
|
1119
1047
|
name = callee_name or "Function"
|
|
1120
1048
|
message = f"{name} does not return a value (it only ever returns None)"
|
|
1121
1049
|
self.fail(message, context, code=codes.FUNC_RETURNS_VALUE)
|
|
@@ -1175,11 +1103,7 @@ class MessageBuilder:
|
|
|
1175
1103
|
code=code,
|
|
1176
1104
|
)
|
|
1177
1105
|
|
|
1178
|
-
self.note(
|
|
1179
|
-
f"Possible overload variant{plural_s(len(overload.items))}:",
|
|
1180
|
-
context,
|
|
1181
|
-
code=code,
|
|
1182
|
-
)
|
|
1106
|
+
self.note(f"Possible overload variant{plural_s(len(overload.items))}:", context, code=code)
|
|
1183
1107
|
for item in overload.items:
|
|
1184
1108
|
self.note(pretty_callable(item, self.options), context, offset=4, code=code)
|
|
1185
1109
|
|
|
@@ -1188,18 +1112,14 @@ class MessageBuilder:
|
|
|
1188
1112
|
) -> None:
|
|
1189
1113
|
if provided < expected:
|
|
1190
1114
|
if provided == 1:
|
|
1191
|
-
self.fail(
|
|
1192
|
-
f"Need more than 1 value to unpack ({expected} expected)", context
|
|
1193
|
-
)
|
|
1115
|
+
self.fail(f"Need more than 1 value to unpack ({expected} expected)", context)
|
|
1194
1116
|
else:
|
|
1195
1117
|
self.fail(
|
|
1196
|
-
f"Need more than {provided} values to unpack ({expected} expected)",
|
|
1197
|
-
context,
|
|
1118
|
+
f"Need more than {provided} values to unpack ({expected} expected)", context
|
|
1198
1119
|
)
|
|
1199
1120
|
elif provided > expected:
|
|
1200
1121
|
self.fail(
|
|
1201
|
-
f"Too many values to unpack ({expected} expected, {provided} provided)",
|
|
1202
|
-
context,
|
|
1122
|
+
f"Too many values to unpack ({expected} expected, {provided} provided)", context
|
|
1203
1123
|
)
|
|
1204
1124
|
|
|
1205
1125
|
def unpacking_strings_disallowed(self, context: Context) -> None:
|
|
@@ -1219,14 +1139,10 @@ class MessageBuilder:
|
|
|
1219
1139
|
) -> None:
|
|
1220
1140
|
target = self.override_target(name, name_in_super, supertype)
|
|
1221
1141
|
self.fail(
|
|
1222
|
-
f'Signature of "{name}" incompatible with {target}',
|
|
1223
|
-
context,
|
|
1224
|
-
code=codes.OVERRIDE,
|
|
1142
|
+
f'Signature of "{name}" incompatible with {target}', context, code=codes.OVERRIDE
|
|
1225
1143
|
)
|
|
1226
1144
|
|
|
1227
|
-
note_template =
|
|
1228
|
-
'Overload variants must be defined in the same order as they are in "{}"'
|
|
1229
|
-
)
|
|
1145
|
+
note_template = 'Overload variants must be defined in the same order as they are in "{}"'
|
|
1230
1146
|
self.note(note_template.format(supertype), context, code=codes.OVERRIDE)
|
|
1231
1147
|
|
|
1232
1148
|
def signature_incompatible_with_supertype(
|
|
@@ -1241,23 +1157,15 @@ class MessageBuilder:
|
|
|
1241
1157
|
) -> None:
|
|
1242
1158
|
code = codes.OVERRIDE
|
|
1243
1159
|
target = self.override_target(name, name_in_super, supertype)
|
|
1244
|
-
self.fail(
|
|
1245
|
-
f'Signature of "{name}" incompatible with {target}', context, code=code
|
|
1246
|
-
)
|
|
1160
|
+
self.fail(f'Signature of "{name}" incompatible with {target}', context, code=code)
|
|
1247
1161
|
|
|
1248
1162
|
original_str, override_str = format_type_distinctly(
|
|
1249
1163
|
original, override, options=self.options, bare=True
|
|
1250
1164
|
)
|
|
1251
1165
|
|
|
1252
|
-
INCLUDE_DECORATOR =
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
ALLOW_DUPS = (
|
|
1256
|
-
True # Allow duplicate notes, needed when signatures are duplicates
|
|
1257
|
-
)
|
|
1258
|
-
ALIGN_OFFSET = (
|
|
1259
|
-
1 # One space, to account for the difference between error and note
|
|
1260
|
-
)
|
|
1166
|
+
INCLUDE_DECORATOR = True # Include @classmethod and @staticmethod decorators, if any
|
|
1167
|
+
ALLOW_DUPS = True # Allow duplicate notes, needed when signatures are duplicates
|
|
1168
|
+
ALIGN_OFFSET = 1 # One space, to account for the difference between error and note
|
|
1261
1169
|
OFFSET = 4 # Four spaces, so that notes will look like this:
|
|
1262
1170
|
# error: Signature of "f" incompatible with supertype "A"
|
|
1263
1171
|
# note: Superclass:
|
|
@@ -1265,11 +1173,7 @@ class MessageBuilder:
|
|
|
1265
1173
|
# note: Subclass:
|
|
1266
1174
|
# note: def f(self, x: str) -> None
|
|
1267
1175
|
self.note(
|
|
1268
|
-
"Superclass:",
|
|
1269
|
-
context,
|
|
1270
|
-
offset=ALIGN_OFFSET + OFFSET,
|
|
1271
|
-
allow_dups=ALLOW_DUPS,
|
|
1272
|
-
code=code,
|
|
1176
|
+
"Superclass:", context, offset=ALIGN_OFFSET + OFFSET, allow_dups=ALLOW_DUPS, code=code
|
|
1273
1177
|
)
|
|
1274
1178
|
if isinstance(original, (CallableType, Overloaded)):
|
|
1275
1179
|
self.pretty_callable_or_overload(
|
|
@@ -1290,11 +1194,7 @@ class MessageBuilder:
|
|
|
1290
1194
|
)
|
|
1291
1195
|
|
|
1292
1196
|
self.note(
|
|
1293
|
-
"Subclass:",
|
|
1294
|
-
context,
|
|
1295
|
-
offset=ALIGN_OFFSET + OFFSET,
|
|
1296
|
-
allow_dups=ALLOW_DUPS,
|
|
1297
|
-
code=code,
|
|
1197
|
+
"Subclass:", context, offset=ALIGN_OFFSET + OFFSET, allow_dups=ALLOW_DUPS, code=code
|
|
1298
1198
|
)
|
|
1299
1199
|
if isinstance(override, (CallableType, Overloaded)):
|
|
1300
1200
|
self.pretty_callable_or_overload(
|
|
@@ -1328,13 +1228,7 @@ class MessageBuilder:
|
|
|
1328
1228
|
if add_class_or_static_decorator:
|
|
1329
1229
|
decorator = pretty_class_or_static_decorator(tp)
|
|
1330
1230
|
if decorator is not None:
|
|
1331
|
-
self.note(
|
|
1332
|
-
decorator,
|
|
1333
|
-
context,
|
|
1334
|
-
offset=offset,
|
|
1335
|
-
allow_dups=allow_dups,
|
|
1336
|
-
code=code,
|
|
1337
|
-
)
|
|
1231
|
+
self.note(decorator, context, offset=offset, allow_dups=allow_dups, code=code)
|
|
1338
1232
|
self.note(
|
|
1339
1233
|
pretty_callable(tp, self.options),
|
|
1340
1234
|
context,
|
|
@@ -1393,10 +1287,7 @@ class MessageBuilder:
|
|
|
1393
1287
|
if name == "__eq__" and type_name:
|
|
1394
1288
|
multiline_msg = self.comparison_method_example_msg(class_name=type_name)
|
|
1395
1289
|
self.note_multiline(
|
|
1396
|
-
multiline_msg,
|
|
1397
|
-
context,
|
|
1398
|
-
code=codes.OVERRIDE,
|
|
1399
|
-
secondary_context=secondary_context,
|
|
1290
|
+
multiline_msg, context, code=codes.OVERRIDE, secondary_context=secondary_context
|
|
1400
1291
|
)
|
|
1401
1292
|
|
|
1402
1293
|
def comparison_method_example_msg(self, class_name: str) -> str:
|
|
@@ -1443,9 +1334,7 @@ class MessageBuilder:
|
|
|
1443
1334
|
and len(original.args) == 3
|
|
1444
1335
|
and original.args[2] == override
|
|
1445
1336
|
):
|
|
1446
|
-
self.note(
|
|
1447
|
-
f'Consider declaring "{name}" in {target} without "async"', context
|
|
1448
|
-
)
|
|
1337
|
+
self.note(f'Consider declaring "{name}" in {target} without "async"', context)
|
|
1449
1338
|
self.note(
|
|
1450
1339
|
"See https://mypy.readthedocs.io/en/stable/more_types.html#asynchronous-iterators",
|
|
1451
1340
|
context,
|
|
@@ -1458,16 +1347,10 @@ class MessageBuilder:
|
|
|
1458
1347
|
return target
|
|
1459
1348
|
|
|
1460
1349
|
def incompatible_type_application(
|
|
1461
|
-
self,
|
|
1462
|
-
min_arg_count: int,
|
|
1463
|
-
max_arg_count: int,
|
|
1464
|
-
actual_arg_count: int,
|
|
1465
|
-
context: Context,
|
|
1350
|
+
self, min_arg_count: int, max_arg_count: int, actual_arg_count: int, context: Context
|
|
1466
1351
|
) -> None:
|
|
1467
1352
|
if max_arg_count == 0:
|
|
1468
|
-
self.fail(
|
|
1469
|
-
"Type application targets a non-generic function or class", context
|
|
1470
|
-
)
|
|
1353
|
+
self.fail("Type application targets a non-generic function or class", context)
|
|
1471
1354
|
return
|
|
1472
1355
|
|
|
1473
1356
|
if min_arg_count == max_arg_count:
|
|
@@ -1498,9 +1381,7 @@ class MessageBuilder:
|
|
|
1498
1381
|
def invalid_var_arg(self, typ: Type, context: Context) -> None:
|
|
1499
1382
|
self.fail("List or tuple expected as variadic arguments", context)
|
|
1500
1383
|
|
|
1501
|
-
def invalid_keyword_var_arg(
|
|
1502
|
-
self, typ: Type, is_mapping: bool, context: Context
|
|
1503
|
-
) -> None:
|
|
1384
|
+
def invalid_keyword_var_arg(self, typ: Type, is_mapping: bool, context: Context) -> None:
|
|
1504
1385
|
typ = get_proper_type(typ)
|
|
1505
1386
|
if isinstance(typ, Instance) and is_mapping:
|
|
1506
1387
|
self.fail("Keywords must be strings", context)
|
|
@@ -1515,20 +1396,12 @@ class MessageBuilder:
|
|
|
1515
1396
|
self.fail(f'"{member}" undefined in superclass', context)
|
|
1516
1397
|
|
|
1517
1398
|
def variable_may_be_undefined(self, name: str, context: Context) -> None:
|
|
1518
|
-
self.fail(
|
|
1519
|
-
f'Name "{name}" may be undefined', context, code=codes.POSSIBLY_UNDEFINED
|
|
1520
|
-
)
|
|
1399
|
+
self.fail(f'Name "{name}" may be undefined', context, code=codes.POSSIBLY_UNDEFINED)
|
|
1521
1400
|
|
|
1522
1401
|
def var_used_before_def(self, name: str, context: Context) -> None:
|
|
1523
|
-
self.fail(
|
|
1524
|
-
f'Name "{name}" is used before definition',
|
|
1525
|
-
context,
|
|
1526
|
-
code=codes.USED_BEFORE_DEF,
|
|
1527
|
-
)
|
|
1402
|
+
self.fail(f'Name "{name}" is used before definition', context, code=codes.USED_BEFORE_DEF)
|
|
1528
1403
|
|
|
1529
|
-
def first_argument_for_super_must_be_type(
|
|
1530
|
-
self, actual: Type, context: Context
|
|
1531
|
-
) -> None:
|
|
1404
|
+
def first_argument_for_super_must_be_type(self, actual: Type, context: Context) -> None:
|
|
1532
1405
|
actual = get_proper_type(actual)
|
|
1533
1406
|
if isinstance(actual, Instance):
|
|
1534
1407
|
# Don't include type of instance, because it can look confusingly like a type
|
|
@@ -1551,11 +1424,7 @@ class MessageBuilder:
|
|
|
1551
1424
|
)
|
|
1552
1425
|
|
|
1553
1426
|
def too_few_string_formatting_arguments(self, context: Context) -> None:
|
|
1554
|
-
self.fail(
|
|
1555
|
-
"Not enough arguments for format string",
|
|
1556
|
-
context,
|
|
1557
|
-
code=codes.STRING_FORMATTING,
|
|
1558
|
-
)
|
|
1427
|
+
self.fail("Not enough arguments for format string", context, code=codes.STRING_FORMATTING)
|
|
1559
1428
|
|
|
1560
1429
|
def too_many_string_formatting_arguments(self, context: Context) -> None:
|
|
1561
1430
|
self.fail(
|
|
@@ -1566,9 +1435,7 @@ class MessageBuilder:
|
|
|
1566
1435
|
|
|
1567
1436
|
def unsupported_placeholder(self, placeholder: str, context: Context) -> None:
|
|
1568
1437
|
self.fail(
|
|
1569
|
-
f'Unsupported format character "{placeholder}"',
|
|
1570
|
-
context,
|
|
1571
|
-
code=codes.STRING_FORMATTING,
|
|
1438
|
+
f'Unsupported format character "{placeholder}"', context, code=codes.STRING_FORMATTING
|
|
1572
1439
|
)
|
|
1573
1440
|
|
|
1574
1441
|
def string_interpolation_with_star_and_key(self, context: Context) -> None:
|
|
@@ -1578,9 +1445,7 @@ class MessageBuilder:
|
|
|
1578
1445
|
code=codes.STRING_FORMATTING,
|
|
1579
1446
|
)
|
|
1580
1447
|
|
|
1581
|
-
def requires_int_or_single_byte(
|
|
1582
|
-
self, context: Context, format_call: bool = False
|
|
1583
|
-
) -> None:
|
|
1448
|
+
def requires_int_or_single_byte(self, context: Context, format_call: bool = False) -> None:
|
|
1584
1449
|
self.fail(
|
|
1585
1450
|
'"{}c" requires an integer in range(256) or a single byte'.format(
|
|
1586
1451
|
":" if format_call else "%"
|
|
@@ -1597,9 +1462,7 @@ class MessageBuilder:
|
|
|
1597
1462
|
)
|
|
1598
1463
|
|
|
1599
1464
|
def key_not_in_mapping(self, key: str, context: Context) -> None:
|
|
1600
|
-
self.fail(
|
|
1601
|
-
f'Key "{key}" not found in mapping', context, code=codes.STRING_FORMATTING
|
|
1602
|
-
)
|
|
1465
|
+
self.fail(f'Key "{key}" not found in mapping', context, code=codes.STRING_FORMATTING)
|
|
1603
1466
|
|
|
1604
1467
|
def string_interpolation_mixing_key_and_non_keys(self, context: Context) -> None:
|
|
1605
1468
|
self.fail(
|
|
@@ -1611,40 +1474,29 @@ class MessageBuilder:
|
|
|
1611
1474
|
def cannot_determine_type(self, name: str, context: Context) -> None:
|
|
1612
1475
|
self.fail(f'Cannot determine type of "{name}"', context, code=codes.HAS_TYPE)
|
|
1613
1476
|
|
|
1614
|
-
def cannot_determine_type_in_base(
|
|
1615
|
-
self, name: str, base: str, context: Context
|
|
1616
|
-
) -> None:
|
|
1477
|
+
def cannot_determine_type_in_base(self, name: str, base: str, context: Context) -> None:
|
|
1617
1478
|
self.fail(f'Cannot determine type of "{name}" in base class "{base}"', context)
|
|
1618
1479
|
|
|
1619
1480
|
def no_formal_self(self, name: str, item: CallableType, context: Context) -> None:
|
|
1620
1481
|
type = format_type(item, self.options)
|
|
1621
1482
|
self.fail(
|
|
1622
|
-
f'Attribute function "{name}" with type {type} does not accept self argument',
|
|
1623
|
-
context,
|
|
1483
|
+
f'Attribute function "{name}" with type {type} does not accept self argument', context
|
|
1624
1484
|
)
|
|
1625
1485
|
|
|
1626
1486
|
def incompatible_self_argument(
|
|
1627
|
-
self,
|
|
1628
|
-
name: str,
|
|
1629
|
-
arg: Type,
|
|
1630
|
-
sig: CallableType,
|
|
1631
|
-
is_classmethod: bool,
|
|
1632
|
-
context: Context,
|
|
1487
|
+
self, name: str, arg: Type, sig: CallableType, is_classmethod: bool, context: Context
|
|
1633
1488
|
) -> None:
|
|
1634
1489
|
kind = "class attribute function" if is_classmethod else "attribute function"
|
|
1635
1490
|
arg_type = format_type(arg, self.options)
|
|
1636
1491
|
sig_type = format_type(sig, self.options)
|
|
1637
1492
|
self.fail(
|
|
1638
|
-
f'Invalid self argument {arg_type} to {kind} "{name}" with type {sig_type}',
|
|
1639
|
-
context,
|
|
1493
|
+
f'Invalid self argument {arg_type} to {kind} "{name}" with type {sig_type}', context
|
|
1640
1494
|
)
|
|
1641
1495
|
|
|
1642
1496
|
def incompatible_conditional_function_def(
|
|
1643
1497
|
self, defn: FuncDef, old_type: FunctionLike, new_type: FunctionLike
|
|
1644
1498
|
) -> None:
|
|
1645
|
-
self.fail(
|
|
1646
|
-
"All conditional function variants must have identical signatures", defn
|
|
1647
|
-
)
|
|
1499
|
+
self.fail("All conditional function variants must have identical signatures", defn)
|
|
1648
1500
|
if isinstance(old_type, (CallableType, Overloaded)) and isinstance(
|
|
1649
1501
|
new_type, (CallableType, Overloaded)
|
|
1650
1502
|
):
|
|
@@ -1693,9 +1545,7 @@ class MessageBuilder:
|
|
|
1693
1545
|
)
|
|
1694
1546
|
|
|
1695
1547
|
def cant_assign_to_method(self, context: Context) -> None:
|
|
1696
|
-
self.fail(
|
|
1697
|
-
message_registry.CANNOT_ASSIGN_TO_METHOD, context, code=codes.METHOD_ASSIGN
|
|
1698
|
-
)
|
|
1548
|
+
self.fail(message_registry.CANNOT_ASSIGN_TO_METHOD, context, code=codes.METHOD_ASSIGN)
|
|
1699
1549
|
|
|
1700
1550
|
def cant_assign_to_classvar(self, name: str, context: Context) -> None:
|
|
1701
1551
|
self.fail(f'Cannot assign to class variable "{name}" via instance', context)
|
|
@@ -1749,17 +1599,13 @@ class MessageBuilder:
|
|
|
1749
1599
|
) -> None:
|
|
1750
1600
|
self.fail(
|
|
1751
1601
|
message_registry.INCOMPATIBLE_TYPEVAR_VALUE.format(
|
|
1752
|
-
typevar_name,
|
|
1753
|
-
callable_name(callee) or "function",
|
|
1754
|
-
format_type(typ, self.options),
|
|
1602
|
+
typevar_name, callable_name(callee) or "function", format_type(typ, self.options)
|
|
1755
1603
|
),
|
|
1756
1604
|
context,
|
|
1757
1605
|
code=codes.TYPE_VAR,
|
|
1758
1606
|
)
|
|
1759
1607
|
|
|
1760
|
-
def dangerous_comparison(
|
|
1761
|
-
self, left: Type, right: Type, kind: str, ctx: Context
|
|
1762
|
-
) -> None:
|
|
1608
|
+
def dangerous_comparison(self, left: Type, right: Type, kind: str, ctx: Context) -> None:
|
|
1763
1609
|
left_str = "element" if kind == "container" else "left operand"
|
|
1764
1610
|
right_str = "container item" if kind == "container" else "right operand"
|
|
1765
1611
|
message = "Non-overlapping {} check ({} type: {}, {} type: {})"
|
|
@@ -1770,18 +1616,14 @@ class MessageBuilder:
|
|
|
1770
1616
|
code=codes.COMPARISON_OVERLAP,
|
|
1771
1617
|
)
|
|
1772
1618
|
|
|
1773
|
-
def overload_inconsistently_applies_decorator(
|
|
1774
|
-
self, decorator: str, context: Context
|
|
1775
|
-
) -> None:
|
|
1619
|
+
def overload_inconsistently_applies_decorator(self, decorator: str, context: Context) -> None:
|
|
1776
1620
|
self.fail(
|
|
1777
1621
|
f'Overload does not consistently use the "@{decorator}" '
|
|
1778
1622
|
+ "decorator on all function signatures.",
|
|
1779
1623
|
context,
|
|
1780
1624
|
)
|
|
1781
1625
|
|
|
1782
|
-
def overloaded_signatures_overlap(
|
|
1783
|
-
self, index1: int, index2: int, context: Context
|
|
1784
|
-
) -> None:
|
|
1626
|
+
def overloaded_signatures_overlap(self, index1: int, index2: int, context: Context) -> None:
|
|
1785
1627
|
self.fail(
|
|
1786
1628
|
"Overloaded function signatures {} and {} overlap with "
|
|
1787
1629
|
"incompatible return types".format(index1, index2),
|
|
@@ -1800,9 +1642,7 @@ class MessageBuilder:
|
|
|
1800
1642
|
context,
|
|
1801
1643
|
)
|
|
1802
1644
|
|
|
1803
|
-
def overloaded_signatures_typevar_specific(
|
|
1804
|
-
self, index: int, context: Context
|
|
1805
|
-
) -> None:
|
|
1645
|
+
def overloaded_signatures_typevar_specific(self, index: int, context: Context) -> None:
|
|
1806
1646
|
self.fail(
|
|
1807
1647
|
f"Overloaded function implementation cannot satisfy signature {index} "
|
|
1808
1648
|
+ "due to inconsistencies in how they use type variables",
|
|
@@ -1824,13 +1664,9 @@ class MessageBuilder:
|
|
|
1824
1664
|
)
|
|
1825
1665
|
|
|
1826
1666
|
def warn_both_operands_are_from_unions(self, context: Context) -> None:
|
|
1827
|
-
self.note(
|
|
1828
|
-
"Both left and right operands are unions", context, code=codes.OPERATOR
|
|
1829
|
-
)
|
|
1667
|
+
self.note("Both left and right operands are unions", context, code=codes.OPERATOR)
|
|
1830
1668
|
|
|
1831
|
-
def warn_operand_was_from_union(
|
|
1832
|
-
self, side: str, original: Type, context: Context
|
|
1833
|
-
) -> None:
|
|
1669
|
+
def warn_operand_was_from_union(self, side: str, original: Type, context: Context) -> None:
|
|
1834
1670
|
self.note(
|
|
1835
1671
|
f"{side} operand is of type {format_type(original, self.options)}",
|
|
1836
1672
|
context,
|
|
@@ -1856,17 +1692,11 @@ class MessageBuilder:
|
|
|
1856
1692
|
context,
|
|
1857
1693
|
)
|
|
1858
1694
|
|
|
1859
|
-
def forward_operator_not_callable(
|
|
1860
|
-
self, forward_method: str, context: Context
|
|
1861
|
-
) -> None:
|
|
1695
|
+
def forward_operator_not_callable(self, forward_method: str, context: Context) -> None:
|
|
1862
1696
|
self.fail(f'Forward operator "{forward_method}" is not callable', context)
|
|
1863
1697
|
|
|
1864
|
-
def signatures_incompatible(
|
|
1865
|
-
self
|
|
1866
|
-
) -> None:
|
|
1867
|
-
self.fail(
|
|
1868
|
-
f'Signatures of "{method}" and "{other_method}" are incompatible', context
|
|
1869
|
-
)
|
|
1698
|
+
def signatures_incompatible(self, method: str, other_method: str, context: Context) -> None:
|
|
1699
|
+
self.fail(f'Signatures of "{method}" and "{other_method}" are incompatible', context)
|
|
1870
1700
|
|
|
1871
1701
|
def yield_from_invalid_operand_type(self, expr: Type, context: Context) -> Type:
|
|
1872
1702
|
text = (
|
|
@@ -1900,16 +1730,13 @@ class MessageBuilder:
|
|
|
1900
1730
|
self.note("Revealed local types are:", context)
|
|
1901
1731
|
for k, v in sorted_locals.items():
|
|
1902
1732
|
visitor = TypeStrVisitor(options=self.options)
|
|
1903
|
-
self.note(
|
|
1904
|
-
f" {k}: {v.accept(visitor) if v is not None else None}", context
|
|
1905
|
-
)
|
|
1733
|
+
self.note(f" {k}: {v.accept(visitor) if v is not None else None}", context)
|
|
1906
1734
|
else:
|
|
1907
1735
|
self.note("There are no locals to reveal", context)
|
|
1908
1736
|
|
|
1909
1737
|
def unsupported_type_type(self, item: Type, context: Context) -> None:
|
|
1910
1738
|
self.fail(
|
|
1911
|
-
f'Cannot instantiate type "Type[{format_type_bare(item, self.options)}]"',
|
|
1912
|
-
context,
|
|
1739
|
+
f'Cannot instantiate type "Type[{format_type_bare(item, self.options)}]"', context
|
|
1913
1740
|
)
|
|
1914
1741
|
|
|
1915
1742
|
def redundant_cast(self, typ: Type, context: Context) -> None:
|
|
@@ -1919,17 +1746,9 @@ class MessageBuilder:
|
|
|
1919
1746
|
code=codes.REDUNDANT_CAST,
|
|
1920
1747
|
)
|
|
1921
1748
|
|
|
1922
|
-
def assert_type_fail(
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
(source, target) = format_type_distinctly(
|
|
1926
|
-
source_type, target_type, options=self.options
|
|
1927
|
-
)
|
|
1928
|
-
self.fail(
|
|
1929
|
-
f"Expression is of type {source}, not {target}",
|
|
1930
|
-
context,
|
|
1931
|
-
code=codes.ASSERT_TYPE,
|
|
1932
|
-
)
|
|
1749
|
+
def assert_type_fail(self, source_type: Type, target_type: Type, context: Context) -> None:
|
|
1750
|
+
(source, target) = format_type_distinctly(source_type, target_type, options=self.options)
|
|
1751
|
+
self.fail(f"Expression is of type {source}, not {target}", context, code=codes.ASSERT_TYPE)
|
|
1933
1752
|
|
|
1934
1753
|
def unimported_type_becomes_any(self, prefix: str, typ: Type, ctx: Context) -> None:
|
|
1935
1754
|
self.fail(
|
|
@@ -1939,21 +1758,14 @@ class MessageBuilder:
|
|
|
1939
1758
|
)
|
|
1940
1759
|
|
|
1941
1760
|
def need_annotation_for_var(
|
|
1942
|
-
self,
|
|
1943
|
-
node: SymbolNode,
|
|
1944
|
-
context: Context,
|
|
1945
|
-
python_version: tuple[int, int] | None = None,
|
|
1761
|
+
self, node: SymbolNode, context: Context, python_version: tuple[int, int] | None = None
|
|
1946
1762
|
) -> None:
|
|
1947
1763
|
hint = ""
|
|
1948
1764
|
pep604_supported = not python_version or python_version >= (3, 10)
|
|
1949
1765
|
# type to recommend the user adds
|
|
1950
1766
|
recommended_type = None
|
|
1951
1767
|
# Only gives hint if it's a variable declaration and the partial type is a builtin type
|
|
1952
|
-
if (
|
|
1953
|
-
python_version
|
|
1954
|
-
and isinstance(node, Var)
|
|
1955
|
-
and isinstance(node.type, PartialType)
|
|
1956
|
-
):
|
|
1768
|
+
if python_version and isinstance(node, Var) and isinstance(node.type, PartialType):
|
|
1957
1769
|
type_dec = "<type>"
|
|
1958
1770
|
if not node.type.type:
|
|
1959
1771
|
# partial None
|
|
@@ -1967,6 +1779,8 @@ class MessageBuilder:
|
|
|
1967
1779
|
alias = alias.split(".")[-1]
|
|
1968
1780
|
if alias == "Dict":
|
|
1969
1781
|
type_dec = f"{type_dec}, {type_dec}"
|
|
1782
|
+
if self.options.use_lowercase_names():
|
|
1783
|
+
alias = alias.lower()
|
|
1970
1784
|
recommended_type = f"{alias}[{type_dec}]"
|
|
1971
1785
|
if recommended_type is not None:
|
|
1972
1786
|
hint = f' (hint: "{node.name}: {recommended_type} = ...")'
|
|
@@ -2014,8 +1828,7 @@ class MessageBuilder:
|
|
|
2014
1828
|
if missing:
|
|
2015
1829
|
self.fail(
|
|
2016
1830
|
"Missing {} for TypedDict {}".format(
|
|
2017
|
-
format_key_list(missing, short=True),
|
|
2018
|
-
format_type(typ, self.options),
|
|
1831
|
+
format_key_list(missing, short=True), format_type(typ, self.options)
|
|
2019
1832
|
),
|
|
2020
1833
|
context,
|
|
2021
1834
|
code=codes.TYPEDDICT_ITEM,
|
|
@@ -2024,8 +1837,7 @@ class MessageBuilder:
|
|
|
2024
1837
|
if extra:
|
|
2025
1838
|
self.fail(
|
|
2026
1839
|
"Extra {} for TypedDict {}".format(
|
|
2027
|
-
format_key_list(extra, short=True),
|
|
2028
|
-
format_type(typ, self.options),
|
|
1840
|
+
format_key_list(extra, short=True), format_type(typ, self.options)
|
|
2029
1841
|
),
|
|
2030
1842
|
context,
|
|
2031
1843
|
code=codes.TYPEDDICT_UNKNOWN_KEY,
|
|
@@ -2040,13 +1852,9 @@ class MessageBuilder:
|
|
|
2040
1852
|
expected = format_key_list(expected_keys)
|
|
2041
1853
|
if actual_keys and actual_set < expected_set:
|
|
2042
1854
|
found = f"only {found}"
|
|
2043
|
-
self.fail(
|
|
2044
|
-
f"Expected {expected} but found {found}", context, code=codes.TYPEDDICT_ITEM
|
|
2045
|
-
)
|
|
1855
|
+
self.fail(f"Expected {expected} but found {found}", context, code=codes.TYPEDDICT_ITEM)
|
|
2046
1856
|
|
|
2047
|
-
def typeddict_key_must_be_string_literal(
|
|
2048
|
-
self, typ: TypedDictType, context: Context
|
|
2049
|
-
) -> None:
|
|
1857
|
+
def typeddict_key_must_be_string_literal(self, typ: TypedDictType, context: Context) -> None:
|
|
2050
1858
|
self.fail(
|
|
2051
1859
|
"TypedDict key must be a string literal; expected one of {}".format(
|
|
2052
1860
|
format_item_name_list(typ.items.keys())
|
|
@@ -2056,11 +1864,7 @@ class MessageBuilder:
|
|
|
2056
1864
|
)
|
|
2057
1865
|
|
|
2058
1866
|
def typeddict_key_not_found(
|
|
2059
|
-
self,
|
|
2060
|
-
typ: TypedDictType,
|
|
2061
|
-
item_name: str,
|
|
2062
|
-
context: Context,
|
|
2063
|
-
setitem: bool = False,
|
|
1867
|
+
self, typ: TypedDictType, item_name: str, context: Context, setitem: bool = False
|
|
2064
1868
|
) -> None:
|
|
2065
1869
|
"""Handle error messages for TypedDicts that have unknown keys.
|
|
2066
1870
|
|
|
@@ -2086,20 +1890,13 @@ class MessageBuilder:
|
|
|
2086
1890
|
matches = best_matches(item_name, typ.items.keys(), n=3)
|
|
2087
1891
|
if matches:
|
|
2088
1892
|
self.note(
|
|
2089
|
-
"Did you mean {}?".format(pretty_seq(matches, "or")),
|
|
2090
|
-
context,
|
|
2091
|
-
code=err_code,
|
|
1893
|
+
"Did you mean {}?".format(pretty_seq(matches, "or")), context, code=err_code
|
|
2092
1894
|
)
|
|
2093
1895
|
|
|
2094
|
-
def typeddict_context_ambiguous(
|
|
2095
|
-
|
|
2096
|
-
) -> None:
|
|
2097
|
-
formatted_types = ", ".join(
|
|
2098
|
-
list(format_type_distinctly(*types, options=self.options))
|
|
2099
|
-
)
|
|
1896
|
+
def typeddict_context_ambiguous(self, types: list[TypedDictType], context: Context) -> None:
|
|
1897
|
+
formatted_types = ", ".join(list(format_type_distinctly(*types, options=self.options)))
|
|
2100
1898
|
self.fail(
|
|
2101
|
-
f"Type of TypedDict is ambiguous, none of ({formatted_types}) matches cleanly",
|
|
2102
|
-
context,
|
|
1899
|
+
f"Type of TypedDict is ambiguous, none of ({formatted_types}) matches cleanly", context
|
|
2103
1900
|
)
|
|
2104
1901
|
|
|
2105
1902
|
def typeddict_key_cannot_be_deleted(
|
|
@@ -2118,18 +1915,13 @@ class MessageBuilder:
|
|
|
2118
1915
|
) -> None:
|
|
2119
1916
|
msg = 'Argument 2 to "setdefault" of "TypedDict" has incompatible type {}; expected {}'
|
|
2120
1917
|
self.fail(
|
|
2121
|
-
msg.format(
|
|
2122
|
-
format_type(default, self.options), format_type(expected, self.options)
|
|
2123
|
-
),
|
|
1918
|
+
msg.format(format_type(default, self.options), format_type(expected, self.options)),
|
|
2124
1919
|
context,
|
|
2125
1920
|
code=codes.TYPEDDICT_ITEM,
|
|
2126
1921
|
)
|
|
2127
1922
|
|
|
2128
1923
|
def type_arguments_not_allowed(self, context: Context) -> None:
|
|
2129
|
-
self.fail(
|
|
2130
|
-
"Parameterized generics cannot be used with class or instance checks",
|
|
2131
|
-
context,
|
|
2132
|
-
)
|
|
1924
|
+
self.fail("Parameterized generics cannot be used with class or instance checks", context)
|
|
2133
1925
|
|
|
2134
1926
|
def disallowed_any_type(self, typ: Type, context: Context) -> None:
|
|
2135
1927
|
typ = get_proper_type(typ)
|
|
@@ -2140,7 +1932,9 @@ class MessageBuilder:
|
|
|
2140
1932
|
self.fail(message, context)
|
|
2141
1933
|
|
|
2142
1934
|
def incorrectly_returning_any(self, typ: Type, context: Context) -> None:
|
|
2143
|
-
message =
|
|
1935
|
+
message = (
|
|
1936
|
+
f"Returning Any from function declared to return {format_type(typ, self.options)}"
|
|
1937
|
+
)
|
|
2144
1938
|
self.fail(message, context, code=codes.NO_ANY_RETURN)
|
|
2145
1939
|
|
|
2146
1940
|
def incorrect__exit__return(self, context: Context) -> None:
|
|
@@ -2171,9 +1965,7 @@ class MessageBuilder:
|
|
|
2171
1965
|
context,
|
|
2172
1966
|
)
|
|
2173
1967
|
|
|
2174
|
-
def typed_function_untyped_decorator(
|
|
2175
|
-
self, func_name: str, context: Context
|
|
2176
|
-
) -> None:
|
|
1968
|
+
def typed_function_untyped_decorator(self, func_name: str, context: Context) -> None:
|
|
2177
1969
|
self.fail(f'Untyped decorator makes function "{func_name}" untyped', context)
|
|
2178
1970
|
|
|
2179
1971
|
def bad_proto_variance(
|
|
@@ -2215,9 +2007,7 @@ class MessageBuilder:
|
|
|
2215
2007
|
)
|
|
2216
2008
|
if len(members) < 3:
|
|
2217
2009
|
attrs = ", ".join(members)
|
|
2218
|
-
self.note(
|
|
2219
|
-
f'Protocol "{tp.name}" has non-method member(s): {attrs}', context
|
|
2220
|
-
)
|
|
2010
|
+
self.note(f'Protocol "{tp.name}" has non-method member(s): {attrs}', context)
|
|
2221
2011
|
|
|
2222
2012
|
def note_call(
|
|
2223
2013
|
self, subtype: Type, call: Type, context: Context, *, code: ErrorCode | None
|
|
@@ -2247,22 +2037,16 @@ class MessageBuilder:
|
|
|
2247
2037
|
'op_name' should either be the string "and" or the string "or".
|
|
2248
2038
|
"""
|
|
2249
2039
|
self.fail(
|
|
2250
|
-
f'Right operand of "{op_name}" is never evaluated',
|
|
2251
|
-
context,
|
|
2252
|
-
code=codes.UNREACHABLE,
|
|
2040
|
+
f'Right operand of "{op_name}" is never evaluated', context, code=codes.UNREACHABLE
|
|
2253
2041
|
)
|
|
2254
2042
|
|
|
2255
|
-
def redundant_condition_in_comprehension(
|
|
2256
|
-
self, truthiness: bool, context: Context
|
|
2257
|
-
) -> None:
|
|
2043
|
+
def redundant_condition_in_comprehension(self, truthiness: bool, context: Context) -> None:
|
|
2258
2044
|
self.redundant_expr("If condition in comprehension", truthiness, context)
|
|
2259
2045
|
|
|
2260
2046
|
def redundant_condition_in_if(self, truthiness: bool, context: Context) -> None:
|
|
2261
2047
|
self.redundant_expr("If condition", truthiness, context)
|
|
2262
2048
|
|
|
2263
|
-
def redundant_expr(
|
|
2264
|
-
self, description: str, truthiness: bool, context: Context
|
|
2265
|
-
) -> None:
|
|
2049
|
+
def redundant_expr(self, description: str, truthiness: bool, context: Context) -> None:
|
|
2266
2050
|
self.fail(
|
|
2267
2051
|
f"{description} is always {str(truthiness).lower()}",
|
|
2268
2052
|
context,
|
|
@@ -2274,9 +2058,16 @@ class MessageBuilder:
|
|
|
2274
2058
|
) -> None:
|
|
2275
2059
|
template = "Subclass of {} cannot exist: {}"
|
|
2276
2060
|
self.fail(
|
|
2277
|
-
template.format(formatted_base_class_list, reason),
|
|
2061
|
+
template.format(formatted_base_class_list, reason), context, code=codes.UNREACHABLE
|
|
2062
|
+
)
|
|
2063
|
+
|
|
2064
|
+
def tvar_without_default_type(
|
|
2065
|
+
self, tvar_name: str, last_tvar_name_with_default: str, context: Context
|
|
2066
|
+
) -> None:
|
|
2067
|
+
self.fail(
|
|
2068
|
+
f'"{tvar_name}" cannot appear after "{last_tvar_name_with_default}" '
|
|
2069
|
+
"in type parameter list because it has no default type",
|
|
2278
2070
|
context,
|
|
2279
|
-
code=codes.UNREACHABLE,
|
|
2280
2071
|
)
|
|
2281
2072
|
|
|
2282
2073
|
def report_protocol_problems(
|
|
@@ -2296,9 +2087,7 @@ class MessageBuilder:
|
|
|
2296
2087
|
OFFSET = 4 # Four spaces, so that notes will look like this:
|
|
2297
2088
|
# note: 'Cls' is missing following 'Proto' members:
|
|
2298
2089
|
# note: method, attr
|
|
2299
|
-
MAX_ITEMS =
|
|
2300
|
-
2 # Maximum number of conflicts, missing members, and overloads shown
|
|
2301
|
-
)
|
|
2090
|
+
MAX_ITEMS = 2 # Maximum number of conflicts, missing members, and overloads shown
|
|
2302
2091
|
# List of special situations where we don't want to report additional problems
|
|
2303
2092
|
exclusions: dict[type, list[str]] = {
|
|
2304
2093
|
TypedDictType: ["typing.Mapping"],
|
|
@@ -2306,9 +2095,7 @@ class MessageBuilder:
|
|
|
2306
2095
|
}
|
|
2307
2096
|
if supertype.type.fullname in exclusions.get(type(subtype), []):
|
|
2308
2097
|
return
|
|
2309
|
-
if any(
|
|
2310
|
-
isinstance(tp, UninhabitedType) for tp in get_proper_types(supertype.args)
|
|
2311
|
-
):
|
|
2098
|
+
if any(isinstance(tp, UninhabitedType) for tp in get_proper_types(supertype.args)):
|
|
2312
2099
|
# We don't want to add notes for failed inference (e.g. Iterable[Never]).
|
|
2313
2100
|
# This will be only confusing a user even more.
|
|
2314
2101
|
return
|
|
@@ -2348,10 +2135,7 @@ class MessageBuilder:
|
|
|
2348
2135
|
missing = get_missing_protocol_members(subtype, supertype, skip=skip)
|
|
2349
2136
|
if (
|
|
2350
2137
|
missing
|
|
2351
|
-
and (
|
|
2352
|
-
len(missing) < len(supertype.type.protocol_members)
|
|
2353
|
-
or missing == ["__call__"]
|
|
2354
|
-
)
|
|
2138
|
+
and (len(missing) < len(supertype.type.protocol_members) or missing == ["__call__"])
|
|
2355
2139
|
and len(missing) <= MAX_ITEMS
|
|
2356
2140
|
):
|
|
2357
2141
|
if missing == ["__call__"] and class_obj:
|
|
@@ -2371,9 +2155,7 @@ class MessageBuilder:
|
|
|
2371
2155
|
code=code,
|
|
2372
2156
|
)
|
|
2373
2157
|
self.note(", ".join(missing), context, offset=OFFSET, code=code)
|
|
2374
|
-
elif len(missing) > MAX_ITEMS or len(missing) == len(
|
|
2375
|
-
supertype.type.protocol_members
|
|
2376
|
-
):
|
|
2158
|
+
elif len(missing) > MAX_ITEMS or len(missing) == len(supertype.type.protocol_members):
|
|
2377
2159
|
# This is an obviously wrong type: too many missing members
|
|
2378
2160
|
return
|
|
2379
2161
|
|
|
@@ -2390,11 +2172,7 @@ class MessageBuilder:
|
|
|
2390
2172
|
or supertype.type.has_param_spec_type
|
|
2391
2173
|
):
|
|
2392
2174
|
type_name = format_type(subtype, self.options, module_names=True)
|
|
2393
|
-
self.note(
|
|
2394
|
-
f"Following member(s) of {type_name} have conflicts:",
|
|
2395
|
-
context,
|
|
2396
|
-
code=code,
|
|
2397
|
-
)
|
|
2175
|
+
self.note(f"Following member(s) of {type_name} have conflicts:", context, code=code)
|
|
2398
2176
|
for name, got, exp in conflict_types[:MAX_ITEMS]:
|
|
2399
2177
|
exp = get_proper_type(exp)
|
|
2400
2178
|
got = get_proper_type(got)
|
|
@@ -2403,8 +2181,7 @@ class MessageBuilder:
|
|
|
2403
2181
|
):
|
|
2404
2182
|
self.note(
|
|
2405
2183
|
"{}: expected {}, got {}".format(
|
|
2406
|
-
name,
|
|
2407
|
-
*format_type_distinctly(exp, got, options=self.options),
|
|
2184
|
+
name, *format_type_distinctly(exp, got, options=self.options)
|
|
2408
2185
|
),
|
|
2409
2186
|
context,
|
|
2410
2187
|
offset=OFFSET,
|
|
@@ -2414,9 +2191,7 @@ class MessageBuilder:
|
|
|
2414
2191
|
self.note("Expected:", context, offset=OFFSET, code=code)
|
|
2415
2192
|
if isinstance(exp, CallableType):
|
|
2416
2193
|
self.note(
|
|
2417
|
-
pretty_callable(
|
|
2418
|
-
exp, self.options, skip_self=class_obj or is_module
|
|
2419
|
-
),
|
|
2194
|
+
pretty_callable(exp, self.options, skip_self=class_obj or is_module),
|
|
2420
2195
|
context,
|
|
2421
2196
|
offset=2 * OFFSET,
|
|
2422
2197
|
code=code,
|
|
@@ -2424,18 +2199,12 @@ class MessageBuilder:
|
|
|
2424
2199
|
else:
|
|
2425
2200
|
assert isinstance(exp, Overloaded)
|
|
2426
2201
|
self.pretty_overload(
|
|
2427
|
-
exp,
|
|
2428
|
-
context,
|
|
2429
|
-
2 * OFFSET,
|
|
2430
|
-
code=code,
|
|
2431
|
-
skip_self=class_obj or is_module,
|
|
2202
|
+
exp, context, 2 * OFFSET, code=code, skip_self=class_obj or is_module
|
|
2432
2203
|
)
|
|
2433
2204
|
self.note("Got:", context, offset=OFFSET, code=code)
|
|
2434
2205
|
if isinstance(got, CallableType):
|
|
2435
2206
|
self.note(
|
|
2436
|
-
pretty_callable(
|
|
2437
|
-
got, self.options, skip_self=class_obj or is_module
|
|
2438
|
-
),
|
|
2207
|
+
pretty_callable(got, self.options, skip_self=class_obj or is_module),
|
|
2439
2208
|
context,
|
|
2440
2209
|
offset=2 * OFFSET,
|
|
2441
2210
|
code=code,
|
|
@@ -2443,33 +2212,21 @@ class MessageBuilder:
|
|
|
2443
2212
|
else:
|
|
2444
2213
|
assert isinstance(got, Overloaded)
|
|
2445
2214
|
self.pretty_overload(
|
|
2446
|
-
got,
|
|
2447
|
-
context,
|
|
2448
|
-
2 * OFFSET,
|
|
2449
|
-
code=code,
|
|
2450
|
-
skip_self=class_obj or is_module,
|
|
2215
|
+
got, context, 2 * OFFSET, code=code, skip_self=class_obj or is_module
|
|
2451
2216
|
)
|
|
2452
2217
|
self.print_more(conflict_types, context, OFFSET, MAX_ITEMS, code=code)
|
|
2453
2218
|
|
|
2454
2219
|
# Report flag conflicts (i.e. settable vs read-only etc.)
|
|
2455
2220
|
conflict_flags = get_bad_protocol_flags(subtype, supertype, class_obj=class_obj)
|
|
2456
2221
|
for name, subflags, superflags in conflict_flags[:MAX_ITEMS]:
|
|
2457
|
-
if
|
|
2458
|
-
not class_obj
|
|
2459
|
-
and IS_CLASSVAR in subflags
|
|
2460
|
-
and IS_CLASSVAR not in superflags
|
|
2461
|
-
):
|
|
2222
|
+
if not class_obj and IS_CLASSVAR in subflags and IS_CLASSVAR not in superflags:
|
|
2462
2223
|
self.note(
|
|
2463
2224
|
"Protocol member {}.{} expected instance variable,"
|
|
2464
2225
|
" got class variable".format(supertype.type.name, name),
|
|
2465
2226
|
context,
|
|
2466
2227
|
code=code,
|
|
2467
2228
|
)
|
|
2468
|
-
if
|
|
2469
|
-
not class_obj
|
|
2470
|
-
and IS_CLASSVAR in superflags
|
|
2471
|
-
and IS_CLASSVAR not in subflags
|
|
2472
|
-
):
|
|
2229
|
+
if not class_obj and IS_CLASSVAR in superflags and IS_CLASSVAR not in subflags:
|
|
2473
2230
|
self.note(
|
|
2474
2231
|
"Protocol member {}.{} expected class variable,"
|
|
2475
2232
|
" got instance variable".format(supertype.type.name, name),
|
|
@@ -2498,9 +2255,7 @@ class MessageBuilder:
|
|
|
2498
2255
|
):
|
|
2499
2256
|
self.note(
|
|
2500
2257
|
"Only class variables allowed for class object access on protocols,"
|
|
2501
|
-
' {} is an instance variable of "{}"'.format(
|
|
2502
|
-
name, subtype.type.name
|
|
2503
|
-
),
|
|
2258
|
+
' {} is an instance variable of "{}"'.format(name, subtype.type.name),
|
|
2504
2259
|
context,
|
|
2505
2260
|
code=code,
|
|
2506
2261
|
)
|
|
@@ -2526,20 +2281,12 @@ class MessageBuilder:
|
|
|
2526
2281
|
skip_self: bool = False,
|
|
2527
2282
|
) -> None:
|
|
2528
2283
|
for item in tp.items:
|
|
2529
|
-
self.note(
|
|
2530
|
-
"@overload", context, offset=offset, allow_dups=allow_dups, code=code
|
|
2531
|
-
)
|
|
2284
|
+
self.note("@overload", context, offset=offset, allow_dups=allow_dups, code=code)
|
|
2532
2285
|
|
|
2533
2286
|
if add_class_or_static_decorator:
|
|
2534
2287
|
decorator = pretty_class_or_static_decorator(item)
|
|
2535
2288
|
if decorator is not None:
|
|
2536
|
-
self.note(
|
|
2537
|
-
decorator,
|
|
2538
|
-
context,
|
|
2539
|
-
offset=offset,
|
|
2540
|
-
allow_dups=allow_dups,
|
|
2541
|
-
code=code,
|
|
2542
|
-
)
|
|
2289
|
+
self.note(decorator, context, offset=offset, allow_dups=allow_dups, code=code)
|
|
2543
2290
|
|
|
2544
2291
|
self.note(
|
|
2545
2292
|
pretty_callable(item, self.options, skip_self=skip_self),
|
|
@@ -2588,9 +2335,7 @@ class MessageBuilder:
|
|
|
2588
2335
|
):
|
|
2589
2336
|
lhs_type = supertype.args[0]
|
|
2590
2337
|
lhs_types = [lhs_type] * len(subtype.items)
|
|
2591
|
-
self.generate_incompatible_tuple_error(
|
|
2592
|
-
lhs_types, subtype.items, context, msg
|
|
2593
|
-
)
|
|
2338
|
+
self.generate_incompatible_tuple_error(lhs_types, subtype.items, context, msg)
|
|
2594
2339
|
return True
|
|
2595
2340
|
elif isinstance(supertype, TupleType) and (
|
|
2596
2341
|
len(subtype.items) > 10 or len(supertype.items) > 10
|
|
@@ -2702,21 +2447,14 @@ def format_callable_args(
|
|
|
2702
2447
|
"""Format a bunch of Callable arguments into a string"""
|
|
2703
2448
|
arg_strings = []
|
|
2704
2449
|
for arg_name, arg_type, arg_kind in zip(arg_names, arg_types, arg_kinds):
|
|
2705
|
-
if (
|
|
2706
|
-
arg_kind == ARG_POS
|
|
2707
|
-
and arg_name is None
|
|
2708
|
-
or verbosity == 0
|
|
2709
|
-
and arg_kind.is_positional()
|
|
2710
|
-
):
|
|
2450
|
+
if arg_kind == ARG_POS and arg_name is None or verbosity == 0 and arg_kind.is_positional():
|
|
2711
2451
|
arg_strings.append(format(arg_type))
|
|
2712
2452
|
else:
|
|
2713
2453
|
constructor = ARG_CONSTRUCTOR_NAMES[arg_kind]
|
|
2714
2454
|
if arg_kind.is_star() or arg_name is None:
|
|
2715
2455
|
arg_strings.append(f"{constructor}({format(arg_type)})")
|
|
2716
2456
|
else:
|
|
2717
|
-
arg_strings.append(
|
|
2718
|
-
f"{constructor}({format(arg_type)}, {repr(arg_name)})"
|
|
2719
|
-
)
|
|
2457
|
+
arg_strings.append(f"{constructor}({format(arg_type)}, {repr(arg_name)})")
|
|
2720
2458
|
|
|
2721
2459
|
return ", ".join(arg_strings)
|
|
2722
2460
|
|
|
@@ -2780,10 +2518,7 @@ def format_type_inner(
|
|
|
2780
2518
|
if itype.type.fullname == "typing._SpecialForm":
|
|
2781
2519
|
# This is not a real type but used for some typing-related constructs.
|
|
2782
2520
|
return "<typing special form>"
|
|
2783
|
-
if (
|
|
2784
|
-
itype.type.fullname in reverse_builtin_aliases
|
|
2785
|
-
and not options.use_lowercase_names()
|
|
2786
|
-
):
|
|
2521
|
+
if itype.type.fullname in reverse_builtin_aliases and not options.use_lowercase_names():
|
|
2787
2522
|
alias = reverse_builtin_aliases[itype.type.fullname]
|
|
2788
2523
|
base_str = alias.split(".")[-1]
|
|
2789
2524
|
elif verbosity >= 2 or (fullnames and itype.type.fullname in fullnames):
|
|
@@ -2815,11 +2550,7 @@ def format_type_inner(
|
|
|
2815
2550
|
# Concatenate[..., P]
|
|
2816
2551
|
if typ.prefix.arg_types:
|
|
2817
2552
|
args = format_callable_args(
|
|
2818
|
-
typ.prefix.arg_types,
|
|
2819
|
-
typ.prefix.arg_kinds,
|
|
2820
|
-
typ.prefix.arg_names,
|
|
2821
|
-
format,
|
|
2822
|
-
verbosity,
|
|
2553
|
+
typ.prefix.arg_types, typ.prefix.arg_kinds, typ.prefix.arg_names, format, verbosity
|
|
2823
2554
|
)
|
|
2824
2555
|
|
|
2825
2556
|
return f"[{args}, **{typ.name_with_suffix()}]"
|
|
@@ -2857,9 +2588,7 @@ def format_type_inner(
|
|
|
2857
2588
|
", ".join(format_literal_value(t) for t in literal_items)
|
|
2858
2589
|
)
|
|
2859
2590
|
|
|
2860
|
-
if len(union_items) == 1 and isinstance(
|
|
2861
|
-
get_proper_type(union_items[0]), NoneType
|
|
2862
|
-
):
|
|
2591
|
+
if len(union_items) == 1 and isinstance(get_proper_type(union_items[0]), NoneType):
|
|
2863
2592
|
return (
|
|
2864
2593
|
f"{literal_str} | None"
|
|
2865
2594
|
if options.use_or_syntax()
|
|
@@ -2876,14 +2605,11 @@ def format_type_inner(
|
|
|
2876
2605
|
else:
|
|
2877
2606
|
# Only print Union as Optional if the Optional wouldn't have to contain another Union
|
|
2878
2607
|
print_as_optional = (
|
|
2879
|
-
len(typ.items)
|
|
2880
|
-
- sum(isinstance(get_proper_type(t), NoneType) for t in typ.items)
|
|
2608
|
+
len(typ.items) - sum(isinstance(get_proper_type(t), NoneType) for t in typ.items)
|
|
2881
2609
|
== 1
|
|
2882
2610
|
)
|
|
2883
2611
|
if print_as_optional:
|
|
2884
|
-
rest = [
|
|
2885
|
-
t for t in typ.items if not isinstance(get_proper_type(t), NoneType)
|
|
2886
|
-
]
|
|
2612
|
+
rest = [t for t in typ.items if not isinstance(get_proper_type(t), NoneType)]
|
|
2887
2613
|
return (
|
|
2888
2614
|
f"{format(rest[0])} | None"
|
|
2889
2615
|
if options.use_or_syntax()
|
|
@@ -2919,6 +2645,8 @@ def format_type_inner(
|
|
|
2919
2645
|
elif isinstance(func, CallableType):
|
|
2920
2646
|
if func.type_guard is not None:
|
|
2921
2647
|
return_type = f"TypeGuard[{format(func.type_guard)}]"
|
|
2648
|
+
elif func.type_is is not None:
|
|
2649
|
+
return_type = f"TypeIs[{format(func.type_is)}]"
|
|
2922
2650
|
else:
|
|
2923
2651
|
return_type = format(func.ret_type)
|
|
2924
2652
|
if func.is_ellipsis_args:
|
|
@@ -2938,9 +2666,7 @@ def format_type_inner(
|
|
|
2938
2666
|
elif isinstance(typ, UnboundType):
|
|
2939
2667
|
return typ.accept(TypeStrVisitor(options=options))
|
|
2940
2668
|
elif isinstance(typ, Parameters):
|
|
2941
|
-
args = format_callable_args(
|
|
2942
|
-
typ.arg_types, typ.arg_kinds, typ.arg_names, format, verbosity
|
|
2943
|
-
)
|
|
2669
|
+
args = format_callable_args(typ.arg_types, typ.arg_kinds, typ.arg_names, format, verbosity)
|
|
2944
2670
|
return f"[{args}]"
|
|
2945
2671
|
elif typ is None:
|
|
2946
2672
|
raise RuntimeError("Type is None")
|
|
@@ -3025,14 +2751,10 @@ def format_type_bare(
|
|
|
3025
2751
|
instead. (The caller may want to use quote_type_string after
|
|
3026
2752
|
processing has happened, to maintain consistent quoting in messages.)
|
|
3027
2753
|
"""
|
|
3028
|
-
return format_type_inner(
|
|
3029
|
-
typ, verbosity, options, find_type_overlaps(typ), module_names
|
|
3030
|
-
)
|
|
2754
|
+
return format_type_inner(typ, verbosity, options, find_type_overlaps(typ), module_names)
|
|
3031
2755
|
|
|
3032
2756
|
|
|
3033
|
-
def format_type_distinctly(
|
|
3034
|
-
*types: Type, options: Options, bare: bool = False
|
|
3035
|
-
) -> tuple[str, ...]:
|
|
2757
|
+
def format_type_distinctly(*types: Type, options: Options, bare: bool = False) -> tuple[str, ...]:
|
|
3036
2758
|
"""Jointly format types to distinct strings.
|
|
3037
2759
|
|
|
3038
2760
|
Increase the verbosity of the type strings until they become distinct
|
|
@@ -3047,9 +2769,7 @@ def format_type_distinctly(
|
|
|
3047
2769
|
overlapping = find_type_overlaps(*types)
|
|
3048
2770
|
for verbosity in range(2):
|
|
3049
2771
|
strs = [
|
|
3050
|
-
format_type_inner(
|
|
3051
|
-
type, verbosity=verbosity, options=options, fullnames=overlapping
|
|
3052
|
-
)
|
|
2772
|
+
format_type_inner(type, verbosity=verbosity, options=options, fullnames=overlapping)
|
|
3053
2773
|
for type in types
|
|
3054
2774
|
]
|
|
3055
2775
|
if len(set(strs)) == len(strs):
|
|
@@ -3108,10 +2828,7 @@ def pretty_callable(tp: CallableType, options: Options, skip_self: bool = False)
|
|
|
3108
2828
|
and name is None
|
|
3109
2829
|
and (
|
|
3110
2830
|
i == len(tp.arg_types) - 1
|
|
3111
|
-
or (
|
|
3112
|
-
tp.arg_names[i + 1] is not None
|
|
3113
|
-
or not tp.arg_kinds[i + 1].is_positional()
|
|
3114
|
-
)
|
|
2831
|
+
or (tp.arg_names[i + 1] is not None or not tp.arg_kinds[i + 1].is_positional())
|
|
3115
2832
|
)
|
|
3116
2833
|
):
|
|
3117
2834
|
s += ", /"
|
|
@@ -3146,6 +2863,8 @@ def pretty_callable(tp: CallableType, options: Options, skip_self: bool = False)
|
|
|
3146
2863
|
s += " -> "
|
|
3147
2864
|
if tp.type_guard is not None:
|
|
3148
2865
|
s += f"TypeGuard[{format_type_bare(tp.type_guard, options)}]"
|
|
2866
|
+
elif tp.type_is is not None:
|
|
2867
|
+
s += f"TypeIs[{format_type_bare(tp.type_is, options)}]"
|
|
3149
2868
|
else:
|
|
3150
2869
|
s += format_type_bare(tp.ret_type, options)
|
|
3151
2870
|
|
|
@@ -3158,16 +2877,12 @@ def pretty_callable(tp: CallableType, options: Options, skip_self: bool = False)
|
|
|
3158
2877
|
isinstance(upper_bound, Instance)
|
|
3159
2878
|
and upper_bound.type.fullname != "builtins.object"
|
|
3160
2879
|
):
|
|
3161
|
-
tvars.append(
|
|
3162
|
-
f"{tvar.name} <: {format_type_bare(upper_bound, options)}"
|
|
3163
|
-
)
|
|
2880
|
+
tvars.append(f"{tvar.name} <: {format_type_bare(upper_bound, options)}")
|
|
3164
2881
|
elif tvar.values:
|
|
3165
2882
|
tvars.append(
|
|
3166
2883
|
"{} in ({})".format(
|
|
3167
2884
|
tvar.name,
|
|
3168
|
-
", ".join(
|
|
3169
|
-
[format_type_bare(tp, options) for tp in tvar.values]
|
|
3170
|
-
),
|
|
2885
|
+
", ".join([format_type_bare(tp, options) for tp in tvar.values]),
|
|
3171
2886
|
)
|
|
3172
2887
|
)
|
|
3173
2888
|
else:
|
|
@@ -3188,9 +2903,7 @@ def variance_string(variance: int) -> str:
|
|
|
3188
2903
|
return "invariant"
|
|
3189
2904
|
|
|
3190
2905
|
|
|
3191
|
-
def get_missing_protocol_members(
|
|
3192
|
-
left: Instance, right: Instance, skip: list[str]
|
|
3193
|
-
) -> list[str]:
|
|
2906
|
+
def get_missing_protocol_members(left: Instance, right: Instance, skip: list[str]) -> list[str]:
|
|
3194
2907
|
"""Find all protocol members of 'right' that are not implemented
|
|
3195
2908
|
(i.e. completely missing) in 'left'.
|
|
3196
2909
|
"""
|
|
@@ -3205,10 +2918,7 @@ def get_missing_protocol_members(
|
|
|
3205
2918
|
|
|
3206
2919
|
|
|
3207
2920
|
def get_conflict_protocol_types(
|
|
3208
|
-
left: Instance,
|
|
3209
|
-
right: Instance,
|
|
3210
|
-
class_obj: bool = False,
|
|
3211
|
-
options: Options | None = None,
|
|
2921
|
+
left: Instance, right: Instance, class_obj: bool = False, options: Options | None = None
|
|
3212
2922
|
) -> list[tuple[str, Type, Type]]:
|
|
3213
2923
|
"""Find members that are defined in 'left' but have incompatible types.
|
|
3214
2924
|
Return them as a list of ('member', 'got', 'expected').
|
|
@@ -3223,9 +2933,7 @@ def get_conflict_protocol_types(
|
|
|
3223
2933
|
subtype = mypy.typeops.get_protocol_member(left, member, class_obj)
|
|
3224
2934
|
if not subtype:
|
|
3225
2935
|
continue
|
|
3226
|
-
is_compat = is_subtype(
|
|
3227
|
-
subtype, supertype, ignore_pos_arg_names=True, options=options
|
|
3228
|
-
)
|
|
2936
|
+
is_compat = is_subtype(subtype, supertype, ignore_pos_arg_names=True, options=options)
|
|
3229
2937
|
if IS_SETTABLE in get_member_flags(member, right):
|
|
3230
2938
|
is_compat = is_compat and is_subtype(supertype, subtype, options=options)
|
|
3231
2939
|
if not is_compat:
|
|
@@ -3243,11 +2951,7 @@ def get_bad_protocol_flags(
|
|
|
3243
2951
|
all_flags: list[tuple[str, set[int], set[int]]] = []
|
|
3244
2952
|
for member in right.type.protocol_members:
|
|
3245
2953
|
if find_member(member, left, left):
|
|
3246
|
-
item = (
|
|
3247
|
-
member,
|
|
3248
|
-
get_member_flags(member, left),
|
|
3249
|
-
get_member_flags(member, right),
|
|
3250
|
-
)
|
|
2954
|
+
item = (member, get_member_flags(member, left), get_member_flags(member, right))
|
|
3251
2955
|
all_flags.append(item)
|
|
3252
2956
|
bad_flags = []
|
|
3253
2957
|
for name, subflags, superflags in all_flags:
|
|
@@ -3345,9 +3049,7 @@ def wrong_type_arg_count(low: int, high: int, act: str, name: str) -> str:
|
|
|
3345
3049
|
return f'"{name}" expects {s}, but {act} given'
|
|
3346
3050
|
|
|
3347
3051
|
|
|
3348
|
-
def find_defining_module(
|
|
3349
|
-
modules: dict[str, MypyFile], typ: CallableType
|
|
3350
|
-
) -> MypyFile | None:
|
|
3052
|
+
def find_defining_module(modules: dict[str, MypyFile], typ: CallableType) -> MypyFile | None:
|
|
3351
3053
|
if not typ.definition:
|
|
3352
3054
|
return None
|
|
3353
3055
|
fullname = typ.definition.fullname
|
|
@@ -3382,10 +3084,7 @@ def best_matches(current: str, options: Collection[str], n: int) -> list[str]:
|
|
|
3382
3084
|
if len(options) >= 50:
|
|
3383
3085
|
options = [o for o in options if abs(len(o) - len(current)) <= 1]
|
|
3384
3086
|
|
|
3385
|
-
ratios = {
|
|
3386
|
-
option: difflib.SequenceMatcher(a=current, b=option).ratio()
|
|
3387
|
-
for option in options
|
|
3388
|
-
}
|
|
3087
|
+
ratios = {option: difflib.SequenceMatcher(a=current, b=option).ratio() for option in options}
|
|
3389
3088
|
options = [option for option, ratio in ratios.items() if ratio > 0.75]
|
|
3390
3089
|
return sorted(options, key=lambda v: (-ratios[v], v))[:n]
|
|
3391
3090
|
|