libv8 6.7.288.46.1 → 7.3.492.27.0beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/CHANGELOG.md +4 -0
- data/README.md +2 -0
- data/ext/libv8/builder.rb +6 -2
- data/lib/libv8/version.rb +1 -1
- data/vendor/depot_tools/.gitattributes +1 -0
- data/vendor/depot_tools/.gitignore +7 -0
- data/vendor/depot_tools/CROS_OWNERS +5 -0
- data/vendor/depot_tools/OWNERS +12 -1
- data/vendor/depot_tools/PRESUBMIT.py +16 -9
- data/vendor/depot_tools/README.md +9 -2
- data/vendor/depot_tools/autoninja +14 -6
- data/vendor/depot_tools/autoninja.bat +11 -1
- data/vendor/depot_tools/autoninja.py +40 -18
- data/vendor/depot_tools/bb +12 -0
- data/vendor/depot_tools/bb.bat +7 -0
- data/vendor/depot_tools/bootstrap/win/manifest.txt +1 -1
- data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +1 -1
- data/vendor/depot_tools/bootstrap/win/win_tools.py +2 -1
- data/vendor/depot_tools/buildbucket.py +57 -4
- data/vendor/depot_tools/cipd +157 -44
- data/vendor/depot_tools/cipd.bat +51 -14
- data/vendor/depot_tools/cipd.ps1 +104 -42
- data/vendor/depot_tools/cipd_client_version +1 -1
- data/vendor/depot_tools/cipd_client_version.digests +21 -0
- data/vendor/depot_tools/cipd_manifest.txt +19 -6
- data/vendor/depot_tools/cipd_manifest.versions +318 -0
- data/vendor/depot_tools/clang_format.py +4 -4
- data/vendor/depot_tools/cpplint.py +44 -199
- data/vendor/depot_tools/dart_format.py +2 -2
- data/vendor/depot_tools/detect_host_arch.py +8 -3
- data/vendor/depot_tools/download_from_google_storage.py +47 -39
- data/vendor/depot_tools/fetch.py +30 -18
- data/vendor/depot_tools/fetch_configs/android_internal.py +34 -0
- data/vendor/depot_tools/fetch_configs/chromium.py +18 -1
- data/vendor/depot_tools/fetch_configs/config_util.py +4 -2
- data/vendor/depot_tools/fetch_configs/inspector_protocol.py +40 -0
- data/vendor/depot_tools/fetch_configs/node-ci.py +41 -0
- data/vendor/depot_tools/fix_encoding.py +3 -3
- data/vendor/depot_tools/gclient +1 -1
- data/vendor/depot_tools/gclient.py +415 -198
- data/vendor/depot_tools/gclient_eval.py +220 -171
- data/vendor/depot_tools/gclient_paths.py +142 -0
- data/vendor/depot_tools/gclient_scm.py +200 -51
- data/vendor/depot_tools/gclient_utils.py +88 -191
- data/vendor/depot_tools/gerrit_client.py +13 -0
- data/vendor/depot_tools/gerrit_util.py +158 -23
- data/vendor/depot_tools/git-nav-upstream +1 -1
- data/vendor/depot_tools/git_cache.py +77 -24
- data/vendor/depot_tools/git_cl.py +705 -1099
- data/vendor/depot_tools/git_common.py +9 -6
- data/vendor/depot_tools/git_map_branches.py +19 -2
- data/vendor/depot_tools/git_nav_downstream.py +3 -4
- data/vendor/depot_tools/git_rebase_update.py +14 -0
- data/vendor/depot_tools/git_reparent_branch.py +8 -2
- data/vendor/depot_tools/gn.py +38 -3
- data/vendor/depot_tools/gsutil.py +8 -3
- data/vendor/depot_tools/gsutil.py.bat +15 -0
- data/vendor/depot_tools/gsutil.vpython +16 -0
- data/vendor/depot_tools/infra/config/OWNERS +0 -1
- data/vendor/depot_tools/infra/config/recipes.cfg +3 -2
- data/vendor/depot_tools/lucicfg +12 -0
- data/vendor/depot_tools/lucicfg.bat +7 -0
- data/vendor/depot_tools/man/html/git-map-branches.html +34 -2
- data/vendor/depot_tools/man/html/git-new-branch.html +40 -32
- data/vendor/depot_tools/man/man1/git-map-branches.1 +24 -5
- data/vendor/depot_tools/man/man1/git-new-branch.1 +35 -27
- data/vendor/depot_tools/man/src/git-map-branches.demo.1.sh +1 -0
- data/vendor/depot_tools/man/src/git-map-branches.txt +10 -0
- data/vendor/depot_tools/man/src/git-new-branch.demo.1.sh +9 -4
- data/vendor/depot_tools/man/src/git-new-branch.txt +1 -1
- data/vendor/depot_tools/metrics.README.md +98 -0
- data/vendor/depot_tools/metrics.py +296 -0
- data/vendor/depot_tools/metrics_utils.py +303 -0
- data/vendor/depot_tools/my_activity.py +91 -29
- data/vendor/depot_tools/ninja +1 -1
- data/vendor/depot_tools/ninjalog.README.md +64 -0
- data/vendor/depot_tools/ninjalog_uploader.py +232 -0
- data/vendor/depot_tools/ninjalog_uploader_wrapper.py +116 -0
- data/vendor/depot_tools/owners.py +30 -13
- data/vendor/depot_tools/owners_finder.py +5 -2
- data/vendor/depot_tools/presubmit_canned_checks.py +188 -29
- data/vendor/depot_tools/presubmit_support.py +18 -41
- data/vendor/depot_tools/pylintrc +23 -19
- data/vendor/depot_tools/recipes/OWNERS +2 -0
- data/vendor/depot_tools/recipes/README.recipes.md +344 -151
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/OWNERS +2 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +2 -16
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +141 -99
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +5 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +5 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +6 -98
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +45 -5
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{tryjob.json → input_commit_with_id_without_repo.json} +6 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{tryjob_empty_revision.json → multiple_patch_refs.json} +8 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +19 -29
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{trychange.json → refs.json} +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +51 -6
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +50 -6
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +51 -6
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +17 -25
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +17 -25
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +18 -26
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +18 -26
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +26 -28
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +45 -5
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +17 -25
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +13 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_manifest_name.json +13 -152
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +185 -202
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +52 -157
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +5 -14
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +34 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +14 -2
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +7 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +9 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +9 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +9 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +13 -8
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +18 -12
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +18 -12
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +18 -12
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.py +3 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +58 -46
- data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +65 -22
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +20 -21
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +20 -21
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +20 -21
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +20 -21
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +5 -2
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +62 -14
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +24 -38
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +56 -50
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.py +15 -9
- data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +4 -1
- data/vendor/depot_tools/recipes/recipe_modules/git/api.py +34 -22
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_luci.json +222 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +224 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +10 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +5 -7
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +5 -7
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +10 -5
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +8 -9
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +12 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +27 -11
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +12 -13
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/__init__.py +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +120 -5
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +45 -3
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.py +25 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +56 -4
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +6 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.py +49 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +24 -13
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +13 -14
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/basic.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_linux.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_mac.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_win.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_linux.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_mac.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_win.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_linux.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_mac.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_win.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/path_config.py +1 -2
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +35 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +116 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +82 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +23 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +2 -7
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +7 -6
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/__init__.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +117 -8
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/set_failure_hash_with_no_steps.json +7 -4
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +98 -7
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +147 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +8 -5
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +8 -5
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +9 -6
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +9 -6
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +27 -2
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/test_api.py +14 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/__init__.py +25 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/api.py +137 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +107 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +26 -0
- data/vendor/depot_tools/recipes/recipes.py +37 -27
- data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +7 -10
- data/vendor/depot_tools/repo +34 -8
- data/vendor/depot_tools/roll_dep.py +52 -49
- data/vendor/depot_tools/scm.py +38 -23
- data/vendor/depot_tools/setup_color.py +4 -2
- data/vendor/depot_tools/split_cl.py +32 -4
- data/vendor/depot_tools/subprocess2.py +22 -4
- data/vendor/depot_tools/third_party/httplib2/README.chromium +2 -2
- data/vendor/depot_tools/third_party/httplib2/__init__.py +242 -158
- data/vendor/depot_tools/third_party/httplib2/cacerts.txt +57 -44
- data/vendor/depot_tools/third_party/httplib2/socks.py +15 -5
- data/vendor/depot_tools/third_party/logilab/README.chromium +2 -4
- data/vendor/depot_tools/third_party/logilab/astroid/README.chromium +2 -1
- data/vendor/depot_tools/third_party/logilab/astroid/__init__.py +10 -5
- data/vendor/depot_tools/third_party/logilab/astroid/__pkginfo__.py +5 -5
- data/vendor/depot_tools/third_party/logilab/astroid/arguments.py +233 -0
- data/vendor/depot_tools/third_party/logilab/astroid/as_string.py +82 -33
- data/vendor/depot_tools/third_party/logilab/astroid/bases.py +137 -153
- data/vendor/depot_tools/third_party/logilab/astroid/brain/{builtin_inference.py → brain_builtin_inference.py} +117 -26
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_dateutil.py +15 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/{py2gi.py → brain_gi.py} +48 -8
- data/vendor/depot_tools/third_party/logilab/astroid/brain/{py2mechanize.py → brain_mechanize.py} +0 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/{pynose.py → brain_nose.py} +4 -1
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_numpy.py +62 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_pytest.py +76 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_qt.py +44 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/{pysix_moves.py → brain_six.py} +28 -1
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_ssl.py +65 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_stdlib.py +473 -0
- data/vendor/depot_tools/third_party/logilab/astroid/builder.py +104 -81
- data/vendor/depot_tools/third_party/logilab/astroid/context.py +81 -0
- data/vendor/depot_tools/third_party/logilab/astroid/decorators.py +75 -0
- data/vendor/depot_tools/third_party/logilab/astroid/exceptions.py +20 -0
- data/vendor/depot_tools/third_party/logilab/astroid/inference.py +137 -183
- data/vendor/depot_tools/third_party/logilab/astroid/manager.py +45 -169
- data/vendor/depot_tools/third_party/logilab/astroid/mixins.py +37 -14
- data/vendor/depot_tools/third_party/logilab/astroid/modutils.py +112 -41
- data/vendor/depot_tools/third_party/logilab/astroid/node_classes.py +243 -156
- data/vendor/depot_tools/third_party/logilab/astroid/nodes.py +35 -22
- data/vendor/depot_tools/third_party/logilab/astroid/objects.py +186 -0
- data/vendor/depot_tools/third_party/logilab/astroid/protocols.py +157 -102
- data/vendor/depot_tools/third_party/logilab/astroid/raw_building.py +32 -8
- data/vendor/depot_tools/third_party/logilab/astroid/rebuilder.py +372 -309
- data/vendor/depot_tools/third_party/logilab/astroid/scoped_nodes.py +652 -420
- data/vendor/depot_tools/third_party/logilab/astroid/test_utils.py +4 -21
- data/vendor/depot_tools/third_party/logilab/astroid/transforms.py +96 -0
- data/vendor/depot_tools/third_party/logilab/astroid/util.py +89 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/LICENSE +19 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/README.chromium +11 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/__init__.py +20 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/cext.c +1421 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/compat.py +9 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/simple.py +246 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/slots.py +414 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/utils.py +13 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/LICENSE +24 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/README.chromium +11 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/__init__.py +19 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/_wrappers.c +2729 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/arguments.py +96 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/decorators.py +512 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/importer.py +228 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/wrappers.py +901 -0
- data/vendor/depot_tools/third_party/pylint/README.chromium +2 -25
- data/vendor/depot_tools/third_party/pylint/__pkginfo__.py +13 -3
- data/vendor/depot_tools/third_party/pylint/checkers/__init__.py +1 -2
- data/vendor/depot_tools/third_party/pylint/checkers/async.py +82 -0
- data/vendor/depot_tools/third_party/pylint/checkers/base.py +893 -119
- data/vendor/depot_tools/third_party/pylint/checkers/classes.py +342 -204
- data/vendor/depot_tools/third_party/pylint/checkers/design_analysis.py +51 -34
- data/vendor/depot_tools/third_party/pylint/checkers/exceptions.py +84 -47
- data/vendor/depot_tools/third_party/pylint/checkers/format.py +55 -30
- data/vendor/depot_tools/third_party/pylint/checkers/imports.py +314 -73
- data/vendor/depot_tools/third_party/pylint/checkers/logging.py +10 -8
- data/vendor/depot_tools/third_party/pylint/checkers/misc.py +2 -1
- data/vendor/depot_tools/third_party/pylint/checkers/newstyle.py +45 -48
- data/vendor/depot_tools/third_party/pylint/checkers/python3.py +31 -21
- data/vendor/depot_tools/third_party/pylint/checkers/raw_metrics.py +3 -3
- data/vendor/depot_tools/third_party/pylint/checkers/similar.py +4 -5
- data/vendor/depot_tools/third_party/pylint/checkers/spelling.py +24 -10
- data/vendor/depot_tools/third_party/pylint/checkers/stdlib.py +120 -56
- data/vendor/depot_tools/third_party/pylint/checkers/strings.py +38 -35
- data/vendor/depot_tools/third_party/pylint/checkers/typecheck.py +485 -138
- data/vendor/depot_tools/third_party/pylint/checkers/utils.py +319 -142
- data/vendor/depot_tools/third_party/pylint/checkers/variables.py +329 -207
- data/vendor/depot_tools/third_party/pylint/config.py +739 -76
- data/vendor/depot_tools/third_party/pylint/epylint.py +9 -5
- data/vendor/depot_tools/third_party/pylint/extensions/__init__.py +0 -0
- data/vendor/depot_tools/third_party/pylint/extensions/check_docs.py +311 -0
- data/vendor/depot_tools/third_party/pylint/extensions/check_elif.py +62 -0
- data/vendor/depot_tools/third_party/{logilab/common → pylint}/graph.py +30 -133
- data/vendor/depot_tools/third_party/pylint/gui.py +2 -2
- data/vendor/depot_tools/third_party/pylint/interfaces.py +21 -3
- data/vendor/depot_tools/third_party/pylint/lint.py +123 -140
- data/vendor/depot_tools/third_party/pylint/pyreverse/diadefslib.py +10 -13
- data/vendor/depot_tools/third_party/pylint/pyreverse/diagrams.py +15 -4
- data/vendor/depot_tools/third_party/pylint/pyreverse/inspector.py +372 -0
- data/vendor/depot_tools/third_party/pylint/pyreverse/main.py +30 -7
- data/vendor/depot_tools/third_party/pylint/pyreverse/utils.py +80 -2
- data/vendor/depot_tools/third_party/{logilab/common → pylint/pyreverse}/vcgutils.py +19 -37
- data/vendor/depot_tools/third_party/pylint/pyreverse/writer.py +3 -4
- data/vendor/depot_tools/third_party/pylint/reporters/__init__.py +34 -18
- data/vendor/depot_tools/third_party/pylint/reporters/guireporter.py +1 -1
- data/vendor/depot_tools/third_party/pylint/reporters/html.py +10 -3
- data/vendor/depot_tools/third_party/pylint/reporters/json.py +10 -4
- data/vendor/depot_tools/third_party/pylint/reporters/text.py +94 -3
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/__init__.py +106 -0
- data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/html_writer.py +17 -57
- data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/nodes.py +52 -74
- data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/text_writer.py +14 -60
- data/vendor/depot_tools/third_party/pylint/testutils.py +22 -20
- data/vendor/depot_tools/third_party/pylint/utils.py +268 -44
- data/vendor/depot_tools/third_party/repo/progress.py +42 -0
- data/vendor/depot_tools/update_depot_tools +1 -1
- data/vendor/depot_tools/upload_metrics.py +25 -0
- data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +45 -15
- data/vendor/depot_tools/win_toolchain/package_from_installed.py +71 -24
- data/vendor/depot_tools/yapf +1 -1
- data/vendor/depot_tools/yapf.bat +1 -1
- metadata +92 -77
- data/vendor/depot_tools/git-crsync +0 -3
- data/vendor/depot_tools/infra/config/cq.cfg +0 -32
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref.json +0 -29
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref_custom.json +0 -29
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/buildbot.json +0 -105
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/shallow.json +0 -195
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle_deprecated.json +0 -248
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8.json +0 -248
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_manifest_name_no_patch.json +0 -105
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/apply_gerrit.py +0 -33
- data/vendor/depot_tools/third_party/logilab/astroid/brain/py2pytest.py +0 -31
- data/vendor/depot_tools/third_party/logilab/astroid/brain/py2qt4.py +0 -22
- data/vendor/depot_tools/third_party/logilab/astroid/brain/py2stdlib.py +0 -334
- data/vendor/depot_tools/third_party/logilab/astroid/inspector.py +0 -273
- data/vendor/depot_tools/third_party/logilab/astroid/utils.py +0 -239
- data/vendor/depot_tools/third_party/logilab/common/LICENSE.txt +0 -339
- data/vendor/depot_tools/third_party/logilab/common/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/common/__init__.py +0 -175
- data/vendor/depot_tools/third_party/logilab/common/__pkginfo__.py +0 -57
- data/vendor/depot_tools/third_party/logilab/common/cache.py +0 -114
- data/vendor/depot_tools/third_party/logilab/common/changelog.py +0 -238
- data/vendor/depot_tools/third_party/logilab/common/clcommands.py +0 -334
- data/vendor/depot_tools/third_party/logilab/common/cli.py +0 -211
- data/vendor/depot_tools/third_party/logilab/common/compat.py +0 -78
- data/vendor/depot_tools/third_party/logilab/common/configuration.py +0 -1105
- data/vendor/depot_tools/third_party/logilab/common/contexts.py +0 -5
- data/vendor/depot_tools/third_party/logilab/common/corbautils.py +0 -117
- data/vendor/depot_tools/third_party/logilab/common/daemon.py +0 -101
- data/vendor/depot_tools/third_party/logilab/common/date.py +0 -335
- data/vendor/depot_tools/third_party/logilab/common/dbf.py +0 -231
- data/vendor/depot_tools/third_party/logilab/common/debugger.py +0 -214
- data/vendor/depot_tools/third_party/logilab/common/decorators.py +0 -281
- data/vendor/depot_tools/third_party/logilab/common/deprecation.py +0 -189
- data/vendor/depot_tools/third_party/logilab/common/fileutils.py +0 -404
- data/vendor/depot_tools/third_party/logilab/common/interface.py +0 -71
- data/vendor/depot_tools/third_party/logilab/common/logging_ext.py +0 -195
- data/vendor/depot_tools/third_party/logilab/common/modutils.py +0 -702
- data/vendor/depot_tools/third_party/logilab/common/optik_ext.py +0 -392
- data/vendor/depot_tools/third_party/logilab/common/optparser.py +0 -92
- data/vendor/depot_tools/third_party/logilab/common/proc.py +0 -277
- data/vendor/depot_tools/third_party/logilab/common/pyro_ext.py +0 -180
- data/vendor/depot_tools/third_party/logilab/common/pytest.py +0 -1199
- data/vendor/depot_tools/third_party/logilab/common/registry.py +0 -1119
- data/vendor/depot_tools/third_party/logilab/common/shellutils.py +0 -462
- data/vendor/depot_tools/third_party/logilab/common/sphinx_ext.py +0 -87
- data/vendor/depot_tools/third_party/logilab/common/sphinxutils.py +0 -122
- data/vendor/depot_tools/third_party/logilab/common/table.py +0 -929
- data/vendor/depot_tools/third_party/logilab/common/tasksqueue.py +0 -101
- data/vendor/depot_tools/third_party/logilab/common/testlib.py +0 -1392
- data/vendor/depot_tools/third_party/logilab/common/textutils.py +0 -537
- data/vendor/depot_tools/third_party/logilab/common/tree.py +0 -369
- data/vendor/depot_tools/third_party/logilab/common/umessage.py +0 -194
- data/vendor/depot_tools/third_party/logilab/common/ureports/__init__.py +0 -172
- data/vendor/depot_tools/third_party/logilab/common/ureports/docbook_writer.py +0 -140
- data/vendor/depot_tools/third_party/logilab/common/urllib2ext.py +0 -89
- data/vendor/depot_tools/third_party/logilab/common/visitor.py +0 -109
- data/vendor/depot_tools/third_party/logilab/common/xmlrpcutils.py +0 -131
- data/vendor/depot_tools/third_party/logilab/common/xmlutils.py +0 -61
@@ -30,6 +30,26 @@ class AstroidBuildingException(AstroidError):
|
|
30
30
|
class ResolveError(AstroidError):
|
31
31
|
"""base class of astroid resolution/inference error"""
|
32
32
|
|
33
|
+
class MroError(ResolveError):
|
34
|
+
"""Error raised when there is a problem with method resolution of a class."""
|
35
|
+
|
36
|
+
|
37
|
+
class DuplicateBasesError(MroError):
|
38
|
+
"""Error raised when there are duplicate bases in the same class bases."""
|
39
|
+
|
40
|
+
|
41
|
+
class InconsistentMroError(MroError):
|
42
|
+
"""Error raised when a class's MRO is inconsistent."""
|
43
|
+
|
44
|
+
|
45
|
+
class SuperError(ResolveError):
|
46
|
+
"""Error raised when there is a problem with a super call."""
|
47
|
+
|
48
|
+
|
49
|
+
class SuperArgumentTypeError(SuperError):
|
50
|
+
"""Error raised when the super arguments are invalid."""
|
51
|
+
|
52
|
+
|
33
53
|
class NotFoundError(ResolveError):
|
34
54
|
"""raised when we are unable to resolve a name"""
|
35
55
|
|
@@ -18,125 +18,32 @@
|
|
18
18
|
"""this module contains a set of functions to handle inference on astroid trees
|
19
19
|
"""
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
from itertools import chain
|
21
|
+
from __future__ import print_function
|
24
22
|
|
23
|
+
from astroid import bases
|
24
|
+
from astroid import context as contextmod
|
25
|
+
from astroid import exceptions
|
26
|
+
from astroid import manager
|
25
27
|
from astroid import nodes
|
28
|
+
from astroid import protocols
|
29
|
+
from astroid import util
|
26
30
|
|
27
|
-
from astroid.manager import AstroidManager
|
28
|
-
from astroid.exceptions import (AstroidError, InferenceError, NoDefault,
|
29
|
-
NotFoundError, UnresolvableName)
|
30
|
-
from astroid.bases import (YES, Instance, InferenceContext,
|
31
|
-
_infer_stmts, copy_context, path_wrapper,
|
32
|
-
raise_if_nothing_infered)
|
33
|
-
from astroid.protocols import (
|
34
|
-
_arguments_infer_argname,
|
35
|
-
BIN_OP_METHOD, UNARY_OP_METHOD)
|
36
|
-
|
37
|
-
MANAGER = AstroidManager()
|
38
|
-
|
39
|
-
|
40
|
-
class CallContext(object):
|
41
|
-
"""when inferring a function call, this class is used to remember values
|
42
|
-
given as argument
|
43
|
-
"""
|
44
|
-
def __init__(self, args, starargs, dstarargs):
|
45
|
-
self.args = []
|
46
|
-
self.nargs = {}
|
47
|
-
for arg in args:
|
48
|
-
if isinstance(arg, nodes.Keyword):
|
49
|
-
self.nargs[arg.arg] = arg.value
|
50
|
-
else:
|
51
|
-
self.args.append(arg)
|
52
|
-
self.starargs = starargs
|
53
|
-
self.dstarargs = dstarargs
|
54
31
|
|
55
|
-
|
56
|
-
"""infer a function argument value according to the call context"""
|
57
|
-
# 1. search in named keywords
|
58
|
-
try:
|
59
|
-
return self.nargs[name].infer(context)
|
60
|
-
except KeyError:
|
61
|
-
# Function.args.args can be None in astroid (means that we don't have
|
62
|
-
# information on argnames)
|
63
|
-
argindex = funcnode.args.find_argname(name)[0]
|
64
|
-
if argindex is not None:
|
65
|
-
# 2. first argument of instance/class method
|
66
|
-
if argindex == 0 and funcnode.type in ('method', 'classmethod'):
|
67
|
-
if context.boundnode is not None:
|
68
|
-
boundnode = context.boundnode
|
69
|
-
else:
|
70
|
-
# XXX can do better ?
|
71
|
-
boundnode = funcnode.parent.frame()
|
72
|
-
if funcnode.type == 'method':
|
73
|
-
if not isinstance(boundnode, Instance):
|
74
|
-
boundnode = Instance(boundnode)
|
75
|
-
return iter((boundnode,))
|
76
|
-
if funcnode.type == 'classmethod':
|
77
|
-
return iter((boundnode,))
|
78
|
-
# if we have a method, extract one position
|
79
|
-
# from the index, so we'll take in account
|
80
|
-
# the extra parameter represented by `self` or `cls`
|
81
|
-
if funcnode.type in ('method', 'classmethod'):
|
82
|
-
argindex -= 1
|
83
|
-
# 2. search arg index
|
84
|
-
try:
|
85
|
-
return self.args[argindex].infer(context)
|
86
|
-
except IndexError:
|
87
|
-
pass
|
88
|
-
# 3. search in *args (.starargs)
|
89
|
-
if self.starargs is not None:
|
90
|
-
its = []
|
91
|
-
for infered in self.starargs.infer(context):
|
92
|
-
if infered is YES:
|
93
|
-
its.append((YES,))
|
94
|
-
continue
|
95
|
-
try:
|
96
|
-
its.append(infered.getitem(argindex, context).infer(context))
|
97
|
-
except (InferenceError, AttributeError):
|
98
|
-
its.append((YES,))
|
99
|
-
except (IndexError, TypeError):
|
100
|
-
continue
|
101
|
-
if its:
|
102
|
-
return chain(*its)
|
103
|
-
# 4. XXX search in **kwargs (.dstarargs)
|
104
|
-
if self.dstarargs is not None:
|
105
|
-
its = []
|
106
|
-
for infered in self.dstarargs.infer(context):
|
107
|
-
if infered is YES:
|
108
|
-
its.append((YES,))
|
109
|
-
continue
|
110
|
-
try:
|
111
|
-
its.append(infered.getitem(name, context).infer(context))
|
112
|
-
except (InferenceError, AttributeError):
|
113
|
-
its.append((YES,))
|
114
|
-
except (IndexError, TypeError):
|
115
|
-
continue
|
116
|
-
if its:
|
117
|
-
return chain(*its)
|
118
|
-
# 5. */** argument, (Tuple or Dict)
|
119
|
-
if name == funcnode.args.vararg:
|
120
|
-
return iter((nodes.const_factory(())))
|
121
|
-
if name == funcnode.args.kwarg:
|
122
|
-
return iter((nodes.const_factory({})))
|
123
|
-
# 6. return default value if any
|
124
|
-
try:
|
125
|
-
return funcnode.args.default_value(name).infer(context)
|
126
|
-
except NoDefault:
|
127
|
-
raise InferenceError(name)
|
32
|
+
MANAGER = manager.AstroidManager()
|
128
33
|
|
129
34
|
|
130
35
|
# .infer method ###############################################################
|
131
36
|
|
132
37
|
|
133
38
|
def infer_end(self, context=None):
|
134
|
-
"""inference's end for node such as Module,
|
39
|
+
"""inference's end for node such as Module, ClassDef, FunctionDef,
|
40
|
+
Const...
|
41
|
+
|
135
42
|
"""
|
136
43
|
yield self
|
137
44
|
nodes.Module._infer = infer_end
|
138
|
-
nodes.
|
139
|
-
nodes.
|
45
|
+
nodes.ClassDef._infer = infer_end
|
46
|
+
nodes.FunctionDef._infer = infer_end
|
140
47
|
nodes.Lambda._infer = infer_end
|
141
48
|
nodes.Const._infer = infer_end
|
142
49
|
nodes.List._infer = infer_end
|
@@ -157,7 +64,7 @@ def _higher_function_scope(node):
|
|
157
64
|
which encloses the given node.
|
158
65
|
"""
|
159
66
|
current = node
|
160
|
-
while current.parent and not isinstance(current.parent, nodes.
|
67
|
+
while current.parent and not isinstance(current.parent, nodes.FunctionDef):
|
161
68
|
current = current.parent
|
162
69
|
if current and current.parent:
|
163
70
|
return current.parent
|
@@ -174,72 +81,80 @@ def infer_name(self, context=None):
|
|
174
81
|
_, stmts = parent_function.lookup(self.name)
|
175
82
|
|
176
83
|
if not stmts:
|
177
|
-
raise UnresolvableName(self.name)
|
84
|
+
raise exceptions.UnresolvableName(self.name)
|
178
85
|
context = context.clone()
|
179
86
|
context.lookupname = self.name
|
180
|
-
return _infer_stmts(stmts, context, frame)
|
181
|
-
nodes.Name._infer = path_wrapper(infer_name)
|
182
|
-
nodes.
|
87
|
+
return bases._infer_stmts(stmts, context, frame)
|
88
|
+
nodes.Name._infer = bases.path_wrapper(infer_name)
|
89
|
+
nodes.AssignName.infer_lhs = infer_name # won't work with a path wrapper
|
183
90
|
|
184
91
|
|
185
|
-
|
186
|
-
|
92
|
+
@bases.path_wrapper
|
93
|
+
@bases.raise_if_nothing_inferred
|
94
|
+
def infer_call(self, context=None):
|
95
|
+
"""infer a Call node by trying to guess what the function returns"""
|
187
96
|
callcontext = context.clone()
|
188
|
-
callcontext.callcontext = CallContext(self.args,
|
97
|
+
callcontext.callcontext = contextmod.CallContext(args=self.args,
|
98
|
+
keywords=self.keywords)
|
189
99
|
callcontext.boundnode = None
|
190
100
|
for callee in self.func.infer(context):
|
191
|
-
if callee is YES:
|
101
|
+
if callee is util.YES:
|
192
102
|
yield callee
|
193
103
|
continue
|
194
104
|
try:
|
195
105
|
if hasattr(callee, 'infer_call_result'):
|
196
|
-
for
|
197
|
-
yield
|
198
|
-
except InferenceError:
|
106
|
+
for inferred in callee.infer_call_result(self, callcontext):
|
107
|
+
yield inferred
|
108
|
+
except exceptions.InferenceError:
|
199
109
|
## XXX log error ?
|
200
110
|
continue
|
201
|
-
nodes.
|
111
|
+
nodes.Call._infer = infer_call
|
202
112
|
|
203
113
|
|
114
|
+
@bases.path_wrapper
|
204
115
|
def infer_import(self, context=None, asname=True):
|
205
116
|
"""infer an Import node: return the imported module/object"""
|
206
117
|
name = context.lookupname
|
207
118
|
if name is None:
|
208
|
-
raise InferenceError()
|
119
|
+
raise exceptions.InferenceError()
|
209
120
|
if asname:
|
210
121
|
yield self.do_import_module(self.real_name(name))
|
211
122
|
else:
|
212
123
|
yield self.do_import_module(name)
|
213
|
-
nodes.Import._infer =
|
124
|
+
nodes.Import._infer = infer_import
|
125
|
+
|
214
126
|
|
215
127
|
def infer_name_module(self, name):
|
216
|
-
context = InferenceContext()
|
128
|
+
context = contextmod.InferenceContext()
|
217
129
|
context.lookupname = name
|
218
130
|
return self.infer(context, asname=False)
|
219
131
|
nodes.Import.infer_name_module = infer_name_module
|
220
132
|
|
221
133
|
|
222
|
-
|
223
|
-
|
134
|
+
@bases.path_wrapper
|
135
|
+
def infer_import_from(self, context=None, asname=True):
|
136
|
+
"""infer a ImportFrom node: return the imported module/object"""
|
224
137
|
name = context.lookupname
|
225
138
|
if name is None:
|
226
|
-
raise InferenceError()
|
139
|
+
raise exceptions.InferenceError()
|
227
140
|
if asname:
|
228
141
|
name = self.real_name(name)
|
229
142
|
module = self.do_import_module()
|
230
143
|
try:
|
231
|
-
context = copy_context(context)
|
144
|
+
context = contextmod.copy_context(context)
|
232
145
|
context.lookupname = name
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
146
|
+
stmts = module.getattr(name, ignore_locals=module is self.root())
|
147
|
+
return bases._infer_stmts(stmts, context)
|
148
|
+
except exceptions.NotFoundError:
|
149
|
+
raise exceptions.InferenceError(name)
|
150
|
+
nodes.ImportFrom._infer = infer_import_from
|
237
151
|
|
238
152
|
|
239
|
-
|
240
|
-
|
153
|
+
@bases.raise_if_nothing_inferred
|
154
|
+
def infer_attribute(self, context=None):
|
155
|
+
"""infer an Attribute node by using getattr on the associated object"""
|
241
156
|
for owner in self.expr.infer(context):
|
242
|
-
if owner is YES:
|
157
|
+
if owner is util.YES:
|
243
158
|
yield owner
|
244
159
|
continue
|
245
160
|
try:
|
@@ -247,58 +162,69 @@ def infer_getattr(self, context=None):
|
|
247
162
|
for obj in owner.igetattr(self.attrname, context):
|
248
163
|
yield obj
|
249
164
|
context.boundnode = None
|
250
|
-
except (NotFoundError, InferenceError):
|
165
|
+
except (exceptions.NotFoundError, exceptions.InferenceError):
|
251
166
|
context.boundnode = None
|
252
167
|
except AttributeError:
|
253
168
|
# XXX method / function
|
254
169
|
context.boundnode = None
|
255
|
-
nodes.
|
256
|
-
nodes.
|
170
|
+
nodes.Attribute._infer = bases.path_wrapper(infer_attribute)
|
171
|
+
nodes.AssignAttr.infer_lhs = infer_attribute # # won't work with a path wrapper
|
257
172
|
|
258
173
|
|
174
|
+
@bases.path_wrapper
|
259
175
|
def infer_global(self, context=None):
|
260
176
|
if context.lookupname is None:
|
261
|
-
raise InferenceError()
|
177
|
+
raise exceptions.InferenceError()
|
262
178
|
try:
|
263
|
-
return _infer_stmts(self.root().getattr(context.lookupname),
|
264
|
-
|
265
|
-
|
266
|
-
|
179
|
+
return bases._infer_stmts(self.root().getattr(context.lookupname),
|
180
|
+
context)
|
181
|
+
except exceptions.NotFoundError:
|
182
|
+
raise exceptions.InferenceError()
|
183
|
+
nodes.Global._infer = infer_global
|
267
184
|
|
268
185
|
|
186
|
+
@bases.raise_if_nothing_inferred
|
269
187
|
def infer_subscript(self, context=None):
|
270
|
-
"""
|
188
|
+
"""Inference for subscripts
|
189
|
+
|
190
|
+
We're understanding if the index is a Const
|
191
|
+
or a slice, passing the result of inference
|
192
|
+
to the value's `getitem` method, which should
|
193
|
+
handle each supported index type accordingly.
|
194
|
+
"""
|
195
|
+
|
271
196
|
value = next(self.value.infer(context))
|
272
|
-
if value is YES:
|
273
|
-
yield YES
|
197
|
+
if value is util.YES:
|
198
|
+
yield util.YES
|
274
199
|
return
|
275
200
|
|
276
201
|
index = next(self.slice.infer(context))
|
277
|
-
if index is YES:
|
278
|
-
yield YES
|
202
|
+
if index is util.YES:
|
203
|
+
yield util.YES
|
279
204
|
return
|
280
205
|
|
281
206
|
if isinstance(index, nodes.Const):
|
282
207
|
try:
|
283
208
|
assigned = value.getitem(index.value, context)
|
284
209
|
except AttributeError:
|
285
|
-
raise InferenceError()
|
210
|
+
raise exceptions.InferenceError()
|
286
211
|
except (IndexError, TypeError):
|
287
|
-
yield YES
|
212
|
+
yield util.YES
|
288
213
|
return
|
289
214
|
|
290
215
|
# Prevent inferring if the infered subscript
|
291
216
|
# is the same as the original subscripted object.
|
292
|
-
if self is assigned:
|
293
|
-
yield YES
|
217
|
+
if self is assigned or assigned is util.YES:
|
218
|
+
yield util.YES
|
294
219
|
return
|
295
220
|
for infered in assigned.infer(context):
|
296
221
|
yield infered
|
297
222
|
else:
|
298
|
-
raise InferenceError()
|
299
|
-
nodes.Subscript._infer = path_wrapper(infer_subscript)
|
300
|
-
nodes.Subscript.infer_lhs =
|
223
|
+
raise exceptions.InferenceError()
|
224
|
+
nodes.Subscript._infer = bases.path_wrapper(infer_subscript)
|
225
|
+
nodes.Subscript.infer_lhs = infer_subscript
|
301
226
|
|
227
|
+
@bases.raise_if_nothing_inferred
|
302
228
|
def infer_unaryop(self, context=None):
|
303
229
|
for operand in self.operand.infer(context):
|
304
230
|
try:
|
@@ -306,9 +232,9 @@ def infer_unaryop(self, context=None):
|
|
306
232
|
except TypeError:
|
307
233
|
continue
|
308
234
|
except AttributeError:
|
309
|
-
meth = UNARY_OP_METHOD[self.op]
|
235
|
+
meth = protocols.UNARY_OP_METHOD[self.op]
|
310
236
|
if meth is None:
|
311
|
-
yield YES
|
237
|
+
yield util.YES
|
312
238
|
else:
|
313
239
|
try:
|
314
240
|
# XXX just suppose if the type implement meth, returned type
|
@@ -318,88 +244,116 @@ def infer_unaryop(self, context=None):
|
|
318
244
|
except GeneratorExit:
|
319
245
|
raise
|
320
246
|
except:
|
321
|
-
yield YES
|
322
|
-
nodes.UnaryOp._infer = path_wrapper(infer_unaryop)
|
247
|
+
yield util.YES
|
248
|
+
nodes.UnaryOp._infer = bases.path_wrapper(infer_unaryop)
|
323
249
|
|
324
|
-
def _infer_binop(
|
325
|
-
if operand1 is YES:
|
250
|
+
def _infer_binop(binop, operand1, operand2, context, failures=None):
|
251
|
+
if operand1 is util.YES:
|
326
252
|
yield operand1
|
327
253
|
return
|
328
254
|
try:
|
329
|
-
for valnode in operand1.infer_binary_op(
|
255
|
+
for valnode in operand1.infer_binary_op(binop, operand2, context):
|
330
256
|
yield valnode
|
331
257
|
except AttributeError:
|
332
258
|
try:
|
333
259
|
# XXX just suppose if the type implement meth, returned type
|
334
260
|
# will be the same
|
335
|
-
operand1.getattr(BIN_OP_METHOD[operator])
|
261
|
+
operand1.getattr(protocols.BIN_OP_METHOD[operator])
|
336
262
|
yield operand1
|
337
263
|
except:
|
338
264
|
if failures is None:
|
339
|
-
yield YES
|
265
|
+
yield util.YES
|
340
266
|
else:
|
341
267
|
failures.append(operand1)
|
342
268
|
|
269
|
+
@bases.yes_if_nothing_inferred
|
343
270
|
def infer_binop(self, context=None):
|
344
271
|
failures = []
|
345
272
|
for lhs in self.left.infer(context):
|
346
|
-
for val in _infer_binop(self
|
273
|
+
for val in _infer_binop(self, lhs, self.right, context, failures):
|
347
274
|
yield val
|
348
275
|
for lhs in failures:
|
349
276
|
for rhs in self.right.infer(context):
|
350
|
-
for val in _infer_binop(self
|
277
|
+
for val in _infer_binop(self, rhs, lhs, context):
|
351
278
|
yield val
|
352
|
-
nodes.BinOp._infer = path_wrapper(infer_binop)
|
279
|
+
nodes.BinOp._infer = bases.path_wrapper(infer_binop)
|
353
280
|
|
354
281
|
|
355
282
|
def infer_arguments(self, context=None):
|
356
283
|
name = context.lookupname
|
357
284
|
if name is None:
|
358
|
-
raise InferenceError()
|
359
|
-
return _arguments_infer_argname(self, name, context)
|
285
|
+
raise exceptions.InferenceError()
|
286
|
+
return protocols._arguments_infer_argname(self, name, context)
|
360
287
|
nodes.Arguments._infer = infer_arguments
|
361
288
|
|
362
289
|
|
363
|
-
|
364
|
-
|
290
|
+
@bases.path_wrapper
|
291
|
+
def infer_assign(self, context=None):
|
292
|
+
"""infer a AssignName/AssignAttr: need to inspect the RHS part of the
|
365
293
|
assign node
|
366
294
|
"""
|
367
295
|
stmt = self.statement()
|
368
296
|
if isinstance(stmt, nodes.AugAssign):
|
369
297
|
return stmt.infer(context)
|
298
|
+
|
370
299
|
stmts = list(self.assigned_stmts(context=context))
|
371
|
-
return _infer_stmts(stmts, context)
|
372
|
-
nodes.
|
373
|
-
nodes.
|
300
|
+
return bases._infer_stmts(stmts, context)
|
301
|
+
nodes.AssignName._infer = infer_assign
|
302
|
+
nodes.AssignAttr._infer = infer_assign
|
374
303
|
|
375
304
|
def infer_augassign(self, context=None):
|
376
305
|
failures = []
|
377
306
|
for lhs in self.target.infer_lhs(context):
|
378
|
-
for val in _infer_binop(self
|
307
|
+
for val in _infer_binop(self, lhs, self.value, context, failures):
|
379
308
|
yield val
|
380
309
|
for lhs in failures:
|
381
310
|
for rhs in self.value.infer(context):
|
382
|
-
for val in _infer_binop(self
|
311
|
+
for val in _infer_binop(self, rhs, lhs, context):
|
383
312
|
yield val
|
384
|
-
nodes.AugAssign._infer = path_wrapper(infer_augassign)
|
313
|
+
nodes.AugAssign._infer = bases.path_wrapper(infer_augassign)
|
385
314
|
|
386
315
|
|
387
316
|
# no infer method on DelName and DelAttr (expected InferenceError)
|
388
317
|
|
389
|
-
|
318
|
+
@bases.path_wrapper
|
390
319
|
def infer_empty_node(self, context=None):
|
391
320
|
if not self.has_underlying_object():
|
392
|
-
yield YES
|
321
|
+
yield util.YES
|
393
322
|
else:
|
394
323
|
try:
|
395
|
-
for
|
396
|
-
|
397
|
-
yield
|
398
|
-
except AstroidError:
|
399
|
-
yield YES
|
400
|
-
nodes.EmptyNode._infer =
|
324
|
+
for inferred in MANAGER.infer_ast_from_something(self.object,
|
325
|
+
context=context):
|
326
|
+
yield inferred
|
327
|
+
except exceptions.AstroidError:
|
328
|
+
yield util.YES
|
329
|
+
nodes.EmptyNode._infer = infer_empty_node
|
401
330
|
|
402
331
|
|
403
332
|
def infer_index(self, context=None):
|
404
333
|
return self.value.infer(context)
|
405
334
|
nodes.Index._infer = infer_index
|
335
|
+
|
336
|
+
# TODO: move directly into bases.Instance when the dependency hell
|
337
|
+
# will be solved.
|
338
|
+
def instance_getitem(self, index, context=None):
|
339
|
+
# Rewrap index to Const for this case
|
340
|
+
index = nodes.Const(index)
|
341
|
+
if context:
|
342
|
+
new_context = context.clone()
|
343
|
+
else:
|
344
|
+
context = new_context = contextmod.InferenceContext()
|
345
|
+
|
346
|
+
# Create a new callcontext for providing index as an argument.
|
347
|
+
new_context.callcontext = contextmod.CallContext(args=[index])
|
348
|
+
new_context.boundnode = self
|
349
|
+
|
350
|
+
method = next(self.igetattr('__getitem__', context=context))
|
351
|
+
if not isinstance(method, bases.BoundMethod):
|
352
|
+
raise exceptions.InferenceError
|
353
|
+
|
354
|
+
try:
|
355
|
+
return next(method.infer_call_result(self, new_context))
|
356
|
+
except StopIteration:
|
357
|
+
raise exceptions.InferenceError
|
358
|
+
|
359
|
+
bases.Instance.getitem = instance_getitem
|