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
@@ -22,23 +22,26 @@ at the same time.
|
|
22
22
|
"""
|
23
23
|
from __future__ import with_statement
|
24
24
|
|
25
|
-
|
26
|
-
|
25
|
+
import _ast
|
26
|
+
import os
|
27
27
|
import sys
|
28
|
-
|
28
|
+
import textwrap
|
29
|
+
|
30
|
+
from astroid import bases
|
31
|
+
from astroid import exceptions
|
32
|
+
from astroid import manager
|
33
|
+
from astroid import modutils
|
34
|
+
from astroid import raw_building
|
35
|
+
from astroid import rebuilder
|
36
|
+
from astroid import util
|
29
37
|
|
30
|
-
from astroid.exceptions import AstroidBuildingException, InferenceError
|
31
|
-
from astroid.raw_building import InspectBuilder
|
32
|
-
from astroid.rebuilder import TreeRebuilder
|
33
|
-
from astroid.manager import AstroidManager
|
34
|
-
from astroid.bases import YES, Instance
|
35
|
-
from astroid.modutils import modpath_from_file
|
36
38
|
|
37
|
-
|
38
|
-
|
39
|
-
|
39
|
+
def _parse(string):
|
40
|
+
return compile(string, "<string>", 'exec', _ast.PyCF_ONLY_AST)
|
41
|
+
|
40
42
|
|
41
43
|
if sys.version_info >= (3, 0):
|
44
|
+
# pylint: disable=no-name-in-module; We don't understand flows yet.
|
42
45
|
from tokenize import detect_encoding
|
43
46
|
|
44
47
|
def open_source_file(filename):
|
@@ -47,10 +50,10 @@ if sys.version_info >= (3, 0):
|
|
47
50
|
stream = open(filename, 'r', newline=None, encoding=encoding)
|
48
51
|
try:
|
49
52
|
data = stream.read()
|
50
|
-
except UnicodeError:
|
53
|
+
except UnicodeError: # wrong encoding
|
51
54
|
# detect_encoding returns utf-8 if no encoding specified
|
52
55
|
msg = 'Wrong (%s) or no encoding specified' % encoding
|
53
|
-
raise AstroidBuildingException(msg)
|
56
|
+
raise exceptions.AstroidBuildingException(msg)
|
54
57
|
return stream, encoding, data
|
55
58
|
|
56
59
|
else:
|
@@ -59,8 +62,7 @@ else:
|
|
59
62
|
_ENCODING_RGX = re.compile(r"\s*#+.*coding[:=]\s*([-\w.]+)")
|
60
63
|
|
61
64
|
def _guess_encoding(string):
|
62
|
-
"""get encoding from a python file as string or return None if not found
|
63
|
-
"""
|
65
|
+
"""get encoding from a python file as string or return None if not found"""
|
64
66
|
# check for UTF-8 byte-order mark
|
65
67
|
if string.startswith('\xef\xbb\xbf'):
|
66
68
|
return 'UTF-8'
|
@@ -77,95 +79,101 @@ else:
|
|
77
79
|
encoding = _guess_encoding(data)
|
78
80
|
return stream, encoding, data
|
79
81
|
|
80
|
-
# ast NG builder ##############################################################
|
81
82
|
|
82
|
-
MANAGER = AstroidManager()
|
83
|
+
MANAGER = manager.AstroidManager()
|
83
84
|
|
84
|
-
class AstroidBuilder(InspectBuilder):
|
85
|
-
"""provide astroid building methods"""
|
86
85
|
|
87
|
-
|
88
|
-
|
86
|
+
class AstroidBuilder(raw_building.InspectBuilder):
|
87
|
+
"""Class for building an astroid tree from source code or from a live module.
|
88
|
+
|
89
|
+
The param *manager* specifies the manager class which should be used.
|
90
|
+
If no manager is given, then the default one will be used. The
|
91
|
+
param *apply_transforms* determines if the transforms should be
|
92
|
+
applied after the tree was built from source or from a live object,
|
93
|
+
by default being True.
|
94
|
+
"""
|
95
|
+
|
96
|
+
def __init__(self, manager=None, apply_transforms=True):
|
97
|
+
super(AstroidBuilder, self).__init__()
|
89
98
|
self._manager = manager or MANAGER
|
99
|
+
self._apply_transforms = apply_transforms
|
90
100
|
|
91
101
|
def module_build(self, module, modname=None):
|
92
|
-
"""
|
93
|
-
"""
|
102
|
+
"""Build an astroid from a living module instance."""
|
94
103
|
node = None
|
95
104
|
path = getattr(module, '__file__', None)
|
96
105
|
if path is not None:
|
97
|
-
path_, ext = splitext(
|
98
|
-
if ext in ('.py', '.pyc', '.pyo') and exists(path_ + '.py'):
|
106
|
+
path_, ext = os.path.splitext(modutils._path_from_filename(path))
|
107
|
+
if ext in ('.py', '.pyc', '.pyo') and os.path.exists(path_ + '.py'):
|
99
108
|
node = self.file_build(path_ + '.py', modname)
|
100
109
|
if node is None:
|
101
110
|
# this is a built-in module
|
102
111
|
# get a partial representation by introspection
|
103
112
|
node = self.inspect_build(module, modname=modname, path=path)
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
# nodes
|
109
|
-
node = self._manager.transform(node)
|
113
|
+
if self._apply_transforms:
|
114
|
+
# We have to handle transformation by ourselves since the
|
115
|
+
# rebuilder isn't called for builtin nodes
|
116
|
+
node = self._manager.visit_transforms(node)
|
110
117
|
return node
|
111
118
|
|
112
119
|
def file_build(self, path, modname=None):
|
113
|
-
"""
|
120
|
+
"""Build astroid from a source code file (i.e. from an ast)
|
114
121
|
|
115
|
-
path is expected to be a python source file
|
122
|
+
*path* is expected to be a python source file
|
116
123
|
"""
|
117
124
|
try:
|
118
125
|
stream, encoding, data = open_source_file(path)
|
119
126
|
except IOError as exc:
|
120
127
|
msg = 'Unable to load file %r (%s)' % (path, exc)
|
121
|
-
raise AstroidBuildingException(msg)
|
122
|
-
except SyntaxError as exc:
|
123
|
-
raise AstroidBuildingException(exc)
|
124
|
-
except LookupError as exc:
|
125
|
-
raise AstroidBuildingException(exc)
|
128
|
+
raise exceptions.AstroidBuildingException(msg)
|
129
|
+
except SyntaxError as exc: # py3k encoding specification error
|
130
|
+
raise exceptions.AstroidBuildingException(exc)
|
131
|
+
except LookupError as exc: # unknown encoding
|
132
|
+
raise exceptions.AstroidBuildingException(exc)
|
126
133
|
with stream:
|
127
134
|
# get module name if necessary
|
128
135
|
if modname is None:
|
129
136
|
try:
|
130
|
-
modname = '.'.join(modpath_from_file(path))
|
137
|
+
modname = '.'.join(modutils.modpath_from_file(path))
|
131
138
|
except ImportError:
|
132
|
-
modname = splitext(basename(path))[0]
|
139
|
+
modname = os.path.splitext(os.path.basename(path))[0]
|
133
140
|
# build astroid representation
|
134
141
|
module = self._data_build(data, modname, path)
|
135
142
|
return self._post_build(module, encoding)
|
136
143
|
|
137
144
|
def string_build(self, data, modname='', path=None):
|
138
|
-
"""
|
145
|
+
"""Build astroid from source code string."""
|
139
146
|
module = self._data_build(data, modname, path)
|
140
|
-
module.
|
147
|
+
module.source_code = data.encode('utf-8')
|
141
148
|
return self._post_build(module, 'utf-8')
|
142
149
|
|
143
150
|
def _post_build(self, module, encoding):
|
144
|
-
"""
|
145
|
-
after a module has been built
|
146
|
-
"""
|
151
|
+
"""Handles encoding and delayed nodes after a module has been built"""
|
147
152
|
module.file_encoding = encoding
|
148
153
|
self._manager.cache_module(module)
|
149
154
|
# post tree building steps after we stored the module in the cache:
|
150
|
-
for from_node in module.
|
155
|
+
for from_node in module._import_from_nodes:
|
151
156
|
if from_node.modname == '__future__':
|
152
157
|
for symbol, _ in from_node.names:
|
153
|
-
module.
|
158
|
+
module._future_imports.add(symbol)
|
154
159
|
self.add_from_names_to_locals(from_node)
|
155
160
|
# handle delayed assattr nodes
|
156
161
|
for delayed in module._delayed_assattr:
|
157
162
|
self.delayed_assattr(delayed)
|
163
|
+
|
164
|
+
# Visit the transforms
|
165
|
+
if self._apply_transforms:
|
166
|
+
module = self._manager.visit_transforms(module)
|
158
167
|
return module
|
159
168
|
|
160
169
|
def _data_build(self, data, modname, path):
|
161
|
-
"""
|
162
|
-
# this method could be wrapped with a pickle/cache function
|
170
|
+
"""Build tree node from data and add some informations"""
|
163
171
|
try:
|
164
|
-
node =
|
165
|
-
except TypeError as exc:
|
166
|
-
raise AstroidBuildingException(exc)
|
172
|
+
node = _parse(data + '\n')
|
173
|
+
except (TypeError, ValueError, SyntaxError) as exc:
|
174
|
+
raise exceptions.AstroidBuildingException(exc)
|
167
175
|
if path is not None:
|
168
|
-
node_file = abspath(path)
|
176
|
+
node_file = os.path.abspath(path)
|
169
177
|
else:
|
170
178
|
node_file = '<?>'
|
171
179
|
if modname.endswith('.__init__'):
|
@@ -173,68 +181,83 @@ class AstroidBuilder(InspectBuilder):
|
|
173
181
|
package = True
|
174
182
|
else:
|
175
183
|
package = path and path.find('__init__.py') > -1 or False
|
176
|
-
|
177
|
-
module =
|
178
|
-
module.
|
179
|
-
module._delayed_assattr =
|
184
|
+
builder = rebuilder.TreeRebuilder(self._manager)
|
185
|
+
module = builder.visit_module(node, modname, node_file, package)
|
186
|
+
module._import_from_nodes = builder._import_from_nodes
|
187
|
+
module._delayed_assattr = builder._delayed_assattr
|
180
188
|
return module
|
181
189
|
|
182
190
|
def add_from_names_to_locals(self, node):
|
183
|
-
"""
|
184
|
-
resort the locals if coming from a delayed node
|
185
|
-
"""
|
191
|
+
"""Store imported names to the locals
|
186
192
|
|
193
|
+
Resort the locals if coming from a delayed node
|
194
|
+
"""
|
187
195
|
_key_func = lambda node: node.fromlineno
|
188
196
|
def sort_locals(my_list):
|
189
197
|
my_list.sort(key=_key_func)
|
198
|
+
|
190
199
|
for (name, asname) in node.names:
|
191
200
|
if name == '*':
|
192
201
|
try:
|
193
202
|
imported = node.do_import_module()
|
194
|
-
except InferenceError:
|
203
|
+
except exceptions.InferenceError:
|
195
204
|
continue
|
196
|
-
for name in imported.
|
205
|
+
for name in imported._public_names():
|
197
206
|
node.parent.set_local(name, node)
|
198
|
-
sort_locals(node.parent.scope().
|
207
|
+
sort_locals(node.parent.scope()._locals[name])
|
199
208
|
else:
|
200
209
|
node.parent.set_local(asname or name, node)
|
201
|
-
sort_locals(node.parent.scope().
|
210
|
+
sort_locals(node.parent.scope()._locals[asname or name])
|
202
211
|
|
203
212
|
def delayed_assattr(self, node):
|
204
|
-
"""
|
205
|
-
|
213
|
+
"""Visit a AssAttr node
|
214
|
+
|
215
|
+
This adds name to locals and handle members definition.
|
206
216
|
"""
|
207
217
|
try:
|
208
218
|
frame = node.frame()
|
209
|
-
for
|
210
|
-
if
|
219
|
+
for inferred in node.expr.infer():
|
220
|
+
if inferred is util.YES:
|
211
221
|
continue
|
212
222
|
try:
|
213
|
-
if
|
214
|
-
|
215
|
-
iattrs =
|
216
|
-
elif isinstance(
|
223
|
+
if inferred.__class__ is bases.Instance:
|
224
|
+
inferred = inferred._proxied
|
225
|
+
iattrs = inferred._instance_attrs
|
226
|
+
elif isinstance(inferred, bases.Instance):
|
217
227
|
# Const, Tuple, ... we may be wrong, may be not, but
|
218
228
|
# anyway we don't want to pollute builtin's namespace
|
219
229
|
continue
|
220
|
-
elif
|
221
|
-
iattrs =
|
230
|
+
elif inferred.is_function:
|
231
|
+
iattrs = inferred._instance_attrs
|
222
232
|
else:
|
223
|
-
iattrs =
|
233
|
+
iattrs = inferred._locals
|
224
234
|
except AttributeError:
|
225
235
|
# XXX log error
|
226
|
-
#import traceback
|
227
|
-
#traceback.print_exc()
|
228
236
|
continue
|
229
237
|
values = iattrs.setdefault(node.attrname, [])
|
230
238
|
if node in values:
|
231
239
|
continue
|
232
240
|
# get assign in __init__ first XXX useful ?
|
233
|
-
if frame.name == '__init__' and values and
|
234
|
-
|
241
|
+
if (frame.name == '__init__' and values and
|
242
|
+
not values[0].frame().name == '__init__'):
|
235
243
|
values.insert(0, node)
|
236
244
|
else:
|
237
245
|
values.append(node)
|
238
|
-
except InferenceError:
|
246
|
+
except exceptions.InferenceError:
|
239
247
|
pass
|
240
248
|
|
249
|
+
|
250
|
+
def parse(code, module_name='', path=None, apply_transforms=True):
|
251
|
+
"""Parses a source string in order to obtain an astroid AST from it
|
252
|
+
|
253
|
+
:param str code: The code for the module.
|
254
|
+
:param str module_name: The name for the module, if any
|
255
|
+
:param str path: The path for the module
|
256
|
+
:param bool apply_transforms:
|
257
|
+
Apply the transforms for the give code. Use it if you
|
258
|
+
don't want the default transforms to be applied.
|
259
|
+
"""
|
260
|
+
code = textwrap.dedent(code)
|
261
|
+
builder = AstroidBuilder(manager=MANAGER,
|
262
|
+
apply_transforms=apply_transforms)
|
263
|
+
return builder.string_build(code, modname=module_name, path=path)
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# copyright 2003-2015 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
|
2
|
+
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
|
3
|
+
#
|
4
|
+
# This file is part of astroid.
|
5
|
+
#
|
6
|
+
# astroid is free software: you can redistribute it and/or modify it
|
7
|
+
# under the terms of the GNU Lesser General Public License as published by the
|
8
|
+
# Free Software Foundation, either version 2.1 of the License, or (at your
|
9
|
+
# option) any later version.
|
10
|
+
#
|
11
|
+
# astroid is distributed in the hope that it will be useful, but
|
12
|
+
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
13
|
+
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
14
|
+
# for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Lesser General Public License along
|
17
|
+
# with astroid. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
|
19
|
+
"""Various context related utilities, including inference and call contexts."""
|
20
|
+
|
21
|
+
import contextlib
|
22
|
+
|
23
|
+
|
24
|
+
class InferenceContext(object):
|
25
|
+
__slots__ = ('path', 'lookupname', 'callcontext', 'boundnode', 'inferred')
|
26
|
+
|
27
|
+
def __init__(self, path=None, inferred=None):
|
28
|
+
self.path = path or set()
|
29
|
+
self.lookupname = None
|
30
|
+
self.callcontext = None
|
31
|
+
self.boundnode = None
|
32
|
+
self.inferred = inferred or {}
|
33
|
+
|
34
|
+
def push(self, node):
|
35
|
+
name = self.lookupname
|
36
|
+
if (node, name) in self.path:
|
37
|
+
raise StopIteration()
|
38
|
+
self.path.add((node, name))
|
39
|
+
|
40
|
+
def clone(self):
|
41
|
+
# XXX copy lookupname/callcontext ?
|
42
|
+
clone = InferenceContext(self.path, inferred=self.inferred)
|
43
|
+
clone.callcontext = self.callcontext
|
44
|
+
clone.boundnode = self.boundnode
|
45
|
+
return clone
|
46
|
+
|
47
|
+
def cache_generator(self, key, generator):
|
48
|
+
results = []
|
49
|
+
for result in generator:
|
50
|
+
results.append(result)
|
51
|
+
yield result
|
52
|
+
|
53
|
+
self.inferred[key] = tuple(results)
|
54
|
+
return
|
55
|
+
|
56
|
+
@contextlib.contextmanager
|
57
|
+
def restore_path(self):
|
58
|
+
path = set(self.path)
|
59
|
+
yield
|
60
|
+
self.path = path
|
61
|
+
|
62
|
+
|
63
|
+
class CallContext(object):
|
64
|
+
"""Holds information for a call site."""
|
65
|
+
|
66
|
+
__slots__ = ('args', 'keywords')
|
67
|
+
|
68
|
+
def __init__(self, args, keywords=None):
|
69
|
+
self.args = args
|
70
|
+
if keywords:
|
71
|
+
keywords = [(arg.arg, arg.value) for arg in keywords]
|
72
|
+
else:
|
73
|
+
keywords = []
|
74
|
+
self.keywords = keywords
|
75
|
+
|
76
|
+
|
77
|
+
def copy_context(context):
|
78
|
+
if context is not None:
|
79
|
+
return context.clone()
|
80
|
+
else:
|
81
|
+
return InferenceContext()
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# copyright 2003-2013 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
|
2
|
+
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
|
3
|
+
#
|
4
|
+
# This file is part of astroid.
|
5
|
+
#
|
6
|
+
# astroid is free software: you can redistribute it and/or modify it
|
7
|
+
# under the terms of the GNU Lesser General Public License as published by the
|
8
|
+
# Free Software Foundation, either version 2.1 of the License, or (at your
|
9
|
+
# option) any later version.
|
10
|
+
#
|
11
|
+
# astroid is distributed in the hope that it will be useful, but
|
12
|
+
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
13
|
+
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
14
|
+
# for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Lesser General Public License along
|
17
|
+
# with astroid. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
#
|
19
|
+
# The code in this file was originally part of logilab-common, licensed under
|
20
|
+
# the same license.
|
21
|
+
|
22
|
+
""" A few useful function/method decorators."""
|
23
|
+
|
24
|
+
import wrapt
|
25
|
+
|
26
|
+
|
27
|
+
@wrapt.decorator
|
28
|
+
def cached(func, instance, args, kwargs):
|
29
|
+
"""Simple decorator to cache result of method calls without args."""
|
30
|
+
cache = getattr(instance, '__cache', None)
|
31
|
+
if cache is None:
|
32
|
+
instance.__cache = cache = {}
|
33
|
+
try:
|
34
|
+
return cache[func]
|
35
|
+
except KeyError:
|
36
|
+
cache[func] = result = func(*args, **kwargs)
|
37
|
+
return result
|
38
|
+
|
39
|
+
|
40
|
+
class cachedproperty(object):
|
41
|
+
""" Provides a cached property equivalent to the stacking of
|
42
|
+
@cached and @property, but more efficient.
|
43
|
+
|
44
|
+
After first usage, the <property_name> becomes part of the object's
|
45
|
+
__dict__. Doing:
|
46
|
+
|
47
|
+
del obj.<property_name> empties the cache.
|
48
|
+
|
49
|
+
Idea taken from the pyramid_ framework and the mercurial_ project.
|
50
|
+
|
51
|
+
.. _pyramid: http://pypi.python.org/pypi/pyramid
|
52
|
+
.. _mercurial: http://pypi.python.org/pypi/Mercurial
|
53
|
+
"""
|
54
|
+
__slots__ = ('wrapped',)
|
55
|
+
|
56
|
+
def __init__(self, wrapped):
|
57
|
+
try:
|
58
|
+
wrapped.__name__
|
59
|
+
except AttributeError:
|
60
|
+
raise TypeError('%s must have a __name__ attribute' %
|
61
|
+
wrapped)
|
62
|
+
self.wrapped = wrapped
|
63
|
+
|
64
|
+
@property
|
65
|
+
def __doc__(self):
|
66
|
+
doc = getattr(self.wrapped, '__doc__', None)
|
67
|
+
return ('<wrapped by the cachedproperty decorator>%s'
|
68
|
+
% ('\n%s' % doc if doc else ''))
|
69
|
+
|
70
|
+
def __get__(self, inst, objtype=None):
|
71
|
+
if inst is None:
|
72
|
+
return self
|
73
|
+
val = self.wrapped(inst)
|
74
|
+
setattr(inst, self.wrapped.__name__, val)
|
75
|
+
return val
|