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
@@ -27,7 +27,7 @@ from six.moves.tkinter import (
|
|
27
27
|
Tk, Frame, Listbox, Entry, Label, Button, Scrollbar,
|
28
28
|
Checkbutton, Radiobutton, IntVar, StringVar, PanedWindow,
|
29
29
|
TOP, LEFT, RIGHT, BOTTOM, END, X, Y, BOTH, SUNKEN, W,
|
30
|
-
HORIZONTAL, DISABLED, NORMAL,
|
30
|
+
HORIZONTAL, DISABLED, NORMAL,
|
31
31
|
)
|
32
32
|
from six.moves.tkinter_tkfiledialog import (
|
33
33
|
askopenfilename, askdirectory,
|
@@ -455,7 +455,7 @@ class LintGui(object):
|
|
455
455
|
try:
|
456
456
|
view_history = open(HOME+HISTORY, 'r')
|
457
457
|
for hist in view_history.readlines():
|
458
|
-
if not
|
458
|
+
if hist not in self.filenames:
|
459
459
|
self.filenames.append(hist)
|
460
460
|
self.showhistory.insert(END, hist.split('\n')[0])
|
461
461
|
view_history.close()
|
@@ -13,8 +13,6 @@
|
|
13
13
|
"""Interfaces for Pylint objects"""
|
14
14
|
from collections import namedtuple
|
15
15
|
|
16
|
-
from logilab.common.interface import Interface
|
17
|
-
|
18
16
|
Confidence = namedtuple('Confidence', ['name', 'description'])
|
19
17
|
# Warning Certainties
|
20
18
|
HIGH = Confidence('HIGH', 'No false positive possible.')
|
@@ -27,6 +25,26 @@ UNDEFINED = Confidence('UNDEFINED',
|
|
27
25
|
CONFIDENCE_LEVELS = [HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED]
|
28
26
|
|
29
27
|
|
28
|
+
class Interface(object):
|
29
|
+
"""Base class for interfaces."""
|
30
|
+
@classmethod
|
31
|
+
def is_implemented_by(cls, instance):
|
32
|
+
return implements(instance, cls)
|
33
|
+
|
34
|
+
|
35
|
+
def implements(obj, interface):
|
36
|
+
"""Return true if the give object (maybe an instance or class) implements
|
37
|
+
the interface.
|
38
|
+
"""
|
39
|
+
kimplements = getattr(obj, '__implements__', ())
|
40
|
+
if not isinstance(kimplements, (list, tuple)):
|
41
|
+
kimplements = (kimplements,)
|
42
|
+
for implementedinterface in kimplements:
|
43
|
+
if issubclass(implementedinterface, interface):
|
44
|
+
return True
|
45
|
+
return False
|
46
|
+
|
47
|
+
|
30
48
|
class IChecker(Interface):
|
31
49
|
"""This is an base interface, not designed to be used elsewhere than for
|
32
50
|
sub interfaces definition.
|
@@ -76,7 +94,7 @@ class IReporter(Interface):
|
|
76
94
|
msg is the actual message
|
77
95
|
"""
|
78
96
|
|
79
|
-
def
|
97
|
+
def display_reports(self, layout):
|
80
98
|
"""display results encapsulated in the layout tree
|
81
99
|
"""
|
82
100
|
|
@@ -29,7 +29,6 @@ from __future__ import print_function
|
|
29
29
|
|
30
30
|
import collections
|
31
31
|
import contextlib
|
32
|
-
import itertools
|
33
32
|
import operator
|
34
33
|
import os
|
35
34
|
try:
|
@@ -40,23 +39,18 @@ import sys
|
|
40
39
|
import tokenize
|
41
40
|
import warnings
|
42
41
|
|
42
|
+
import six
|
43
|
+
|
43
44
|
import astroid
|
44
45
|
from astroid.__pkginfo__ import version as astroid_version
|
45
46
|
from astroid import modutils
|
46
|
-
from logilab.common import configuration
|
47
|
-
from logilab.common import optik_ext
|
48
|
-
from logilab.common import interface
|
49
|
-
from logilab.common import textutils
|
50
|
-
from logilab.common import ureports
|
51
|
-
from logilab.common import __version__ as common_version
|
52
|
-
import six
|
53
|
-
|
54
47
|
from pylint import checkers
|
55
48
|
from pylint import interfaces
|
56
49
|
from pylint import reporters
|
57
50
|
from pylint import utils
|
58
51
|
from pylint import config
|
59
52
|
from pylint.__pkginfo__ import version
|
53
|
+
from pylint.reporters.ureports import nodes as report_nodes
|
60
54
|
|
61
55
|
|
62
56
|
MANAGER = astroid.MANAGER
|
@@ -97,7 +91,11 @@ def _get_python_path(filepath):
|
|
97
91
|
|
98
92
|
def _merge_stats(stats):
|
99
93
|
merged = {}
|
94
|
+
by_msg = collections.Counter()
|
100
95
|
for stat in stats:
|
96
|
+
message_stats = stat.pop('by_msg', {})
|
97
|
+
by_msg.update(message_stats)
|
98
|
+
|
101
99
|
for key, item in six.iteritems(stat):
|
102
100
|
if key not in merged:
|
103
101
|
merged[key] = item
|
@@ -106,6 +104,8 @@ def _merge_stats(stats):
|
|
106
104
|
merged[key].update(item)
|
107
105
|
else:
|
108
106
|
merged[key] = merged[key] + item
|
107
|
+
|
108
|
+
merged['by_msg'] = by_msg
|
109
109
|
return merged
|
110
110
|
|
111
111
|
|
@@ -139,10 +139,6 @@ MSGS = {
|
|
139
139
|
'Used when an unexpected error occurred while building the '
|
140
140
|
'Astroid representation. This is usually accompanied by a '
|
141
141
|
'traceback. Please report such errors !'),
|
142
|
-
'F0003': ('ignored builtin module %s',
|
143
|
-
'ignored-builtin-module',
|
144
|
-
'Used to indicate that the user asked to analyze a builtin '
|
145
|
-
'module which has been skipped.'),
|
146
142
|
'F0010': ('error while code parsing: %s',
|
147
143
|
'parse-error',
|
148
144
|
'Used when an exception occured while building the Astroid '
|
@@ -199,21 +195,16 @@ MSGS = {
|
|
199
195
|
}
|
200
196
|
|
201
197
|
|
202
|
-
def _deprecated_option(shortname, opt_type, help_msg):
|
203
|
-
def _warn_deprecated(option, optname, *args): # pylint: disable=unused-argument
|
204
|
-
sys.stderr.write('Warning: option %s is deprecated and ignored.\n' % (optname,))
|
205
|
-
return {'short': shortname, 'help': help_msg, 'hide': True,
|
206
|
-
'type': opt_type, 'action': 'callback', 'callback': _warn_deprecated}
|
207
|
-
|
208
|
-
|
209
198
|
if multiprocessing is not None:
|
210
|
-
class ChildLinter(multiprocessing.Process):
|
199
|
+
class ChildLinter(multiprocessing.Process):
|
211
200
|
def run(self):
|
212
|
-
|
201
|
+
# pylint: disable=no-member, unbalanced-tuple-unpacking
|
202
|
+
tasks_queue, results_queue, self._config = self._args
|
213
203
|
|
214
204
|
self._config["jobs"] = 1 # Child does not parallelize any further.
|
215
205
|
self._python3_porting_mode = self._config.pop(
|
216
206
|
'python3_porting_mode', None)
|
207
|
+
self._plugins = self._config.pop('plugins', None)
|
217
208
|
|
218
209
|
# Run linter for received files/modules.
|
219
210
|
for file_or_module in iter(tasks_queue.get, 'STOP'):
|
@@ -232,9 +223,10 @@ if multiprocessing is not None:
|
|
232
223
|
# Register standard checkers.
|
233
224
|
linter.load_default_plugins()
|
234
225
|
# Load command line plugins.
|
235
|
-
|
226
|
+
if self._plugins:
|
227
|
+
linter.load_plugin_modules(self._plugins)
|
236
228
|
|
237
|
-
linter.
|
229
|
+
linter.load_configuration_from_config(self._config)
|
238
230
|
linter.set_reporter(reporters.CollectingReporter())
|
239
231
|
|
240
232
|
# Enable the Python 3 checker mode. This option is
|
@@ -252,7 +244,7 @@ if multiprocessing is not None:
|
|
252
244
|
msgs, linter.stats, linter.msg_status)
|
253
245
|
|
254
246
|
|
255
|
-
class PyLinter(
|
247
|
+
class PyLinter(config.OptionsManagerMixIn,
|
256
248
|
utils.MessagesHandlerMixIn,
|
257
249
|
utils.ReportsHandlerMixIn,
|
258
250
|
checkers.BaseTokenChecker):
|
@@ -332,11 +324,7 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
332
324
|
'statements analyzed. This is used by the global '
|
333
325
|
'evaluation report (RP0004).'}),
|
334
326
|
|
335
|
-
('comment',
|
336
|
-
{'default': 0, 'type' : 'yn', 'metavar' : '<y_or_n>',
|
337
|
-
'group': 'Reports', 'level': 1,
|
338
|
-
'help' : 'Add a comment according to your evaluation note. '
|
339
|
-
'This is used by the global evaluation report (RP0004).'}),
|
327
|
+
('comment', utils.deprecated_option(opt_type='yn')),
|
340
328
|
|
341
329
|
('confidence',
|
342
330
|
{'type' : 'multiple_choice', 'metavar': '<levels>',
|
@@ -353,7 +341,9 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
353
341
|
'group': 'Messages control',
|
354
342
|
'help' : 'Enable the message, report, category or checker with the '
|
355
343
|
'given id(s). You can either give multiple identifier '
|
356
|
-
'separated by comma (,) or put this option multiple time
|
344
|
+
'separated by comma (,) or put this option multiple time '
|
345
|
+
'(only on the command line, not in the configuration file '
|
346
|
+
'where it should appear only once). '
|
357
347
|
'See also the "--disable" option for examples. '}),
|
358
348
|
|
359
349
|
('disable',
|
@@ -382,9 +372,8 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
382
372
|
'See doc for all details')
|
383
373
|
}),
|
384
374
|
|
385
|
-
('include-ids',
|
386
|
-
|
387
|
-
('symbols', _deprecated_option('s', 'yn', SYMBOLS_HELP)),
|
375
|
+
('include-ids', utils.deprecated_option('i', 'yn', INCLUDE_IDS_HELP)),
|
376
|
+
('symbols', utils.deprecated_option('s', 'yn', SYMBOLS_HELP)),
|
388
377
|
|
389
378
|
('jobs',
|
390
379
|
{'type' : 'int', 'metavar': '<n-processes>',
|
@@ -400,24 +389,24 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
400
389
|
' may run arbitrary code.')}),
|
401
390
|
|
402
391
|
('extension-pkg-whitelist',
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
392
|
+
{'type': 'csv', 'metavar': '<pkg[,pkg]>', 'default': [],
|
393
|
+
'help': ('A comma-separated list of package or module names'
|
394
|
+
' from where C extensions may be loaded. Extensions are'
|
395
|
+
' loading into the active Python interpreter and may run'
|
396
|
+
' arbitrary code')}
|
397
|
+
),
|
409
398
|
|
410
399
|
('optimize-ast',
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
400
|
+
{'type': 'yn', 'metavar': '<yn>', 'default': False,
|
401
|
+
'help': ('Allow optimization of some AST trees. This will '
|
402
|
+
'activate a peephole AST optimizer, which will '
|
403
|
+
'apply various small optimizations. For instance, '
|
404
|
+
'it can be used to obtain the result of joining '
|
405
|
+
'multiple strings with the addition operator. '
|
406
|
+
'Joining a lot of strings can lead to a maximum '
|
407
|
+
'recursion error in Pylint and this flag can prevent '
|
408
|
+
'that. It has one side effect, the resulting AST '
|
409
|
+
'will be different than the one from reality.')}
|
421
410
|
),
|
422
411
|
)
|
423
412
|
|
@@ -452,14 +441,14 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
452
441
|
'disable': self.disable}
|
453
442
|
self._bw_options_methods = {'disable-msg': self.disable,
|
454
443
|
'enable-msg': self.enable}
|
455
|
-
full_version = '%%prog %s, \nastroid %s
|
456
|
-
version, astroid_version,
|
457
|
-
configuration.OptionsManagerMixIn.__init__(
|
458
|
-
self, usage=__doc__,
|
459
|
-
version=full_version,
|
460
|
-
config_file=pylintrc or config.PYLINTRC)
|
444
|
+
full_version = '%%prog %s, \nastroid %s\nPython %s' % (
|
445
|
+
version, astroid_version, sys.version)
|
461
446
|
utils.MessagesHandlerMixIn.__init__(self)
|
462
447
|
utils.ReportsHandlerMixIn.__init__(self)
|
448
|
+
super(PyLinter, self).__init__(
|
449
|
+
usage=__doc__,
|
450
|
+
version=full_version,
|
451
|
+
config_file=pylintrc or config.PYLINTRC)
|
463
452
|
checkers.BaseTokenChecker.__init__(self)
|
464
453
|
# provided reports
|
465
454
|
self.reports = (('RP0001', 'Messages by category',
|
@@ -516,7 +505,7 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
516
505
|
reporter.linter = self
|
517
506
|
|
518
507
|
def set_option(self, optname, value, action=None, optdict=None):
|
519
|
-
"""overridden from
|
508
|
+
"""overridden from config.OptionsProviderMixin to handle some
|
520
509
|
special options
|
521
510
|
"""
|
522
511
|
if optname in self._options_methods or \
|
@@ -526,10 +515,10 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
526
515
|
meth = self._options_methods[optname]
|
527
516
|
except KeyError:
|
528
517
|
meth = self._bw_options_methods[optname]
|
529
|
-
warnings.warn('%s is deprecated, replace it by %s' % (
|
530
|
-
|
518
|
+
warnings.warn('%s is deprecated, replace it by %s' % (optname,
|
519
|
+
optname.split('-')[0]),
|
531
520
|
DeprecationWarning)
|
532
|
-
value =
|
521
|
+
value = utils._check_csv(value)
|
533
522
|
if isinstance(value, (list, tuple)):
|
534
523
|
for _id in value:
|
535
524
|
meth(_id, ignore_unknown=True)
|
@@ -546,7 +535,7 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
546
535
|
try:
|
547
536
|
checkers.BaseTokenChecker.set_option(self, optname,
|
548
537
|
value, action, optdict)
|
549
|
-
except
|
538
|
+
except config.UnsupportedAction:
|
550
539
|
print('option %s can\'t be read from config file' % \
|
551
540
|
optname, file=sys.stderr)
|
552
541
|
|
@@ -597,8 +586,8 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
597
586
|
|
598
587
|
def disable_reporters(self):
|
599
588
|
"""disable all reporters"""
|
600
|
-
for
|
601
|
-
for report_id, _, _ in
|
589
|
+
for _reporters in six.itervalues(self._reports):
|
590
|
+
for report_id, _, _ in _reporters:
|
602
591
|
self.disable_report(report_id)
|
603
592
|
|
604
593
|
def error_mode(self):
|
@@ -669,7 +658,7 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
669
658
|
# found a "(dis|en)able-msg" pragma deprecated suppresssion
|
670
659
|
self.add_message('deprecated-pragma', line=start[0],
|
671
660
|
args=(opt, opt.replace('-msg', '')))
|
672
|
-
for msgid in
|
661
|
+
for msgid in utils._splitstrip(value):
|
673
662
|
# Add the line where a control pragma was encountered.
|
674
663
|
if opt in control_pragmas:
|
675
664
|
self._pragma_lineno[msgid] = start[0]
|
@@ -692,8 +681,8 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
692
681
|
|
693
682
|
def get_checkers(self):
|
694
683
|
"""return all available checkers as a list"""
|
695
|
-
return [self] + [c for
|
696
|
-
for c in
|
684
|
+
return [self] + [c for _checkers in six.itervalues(self._checkers)
|
685
|
+
for c in _checkers if c is not self]
|
697
686
|
|
698
687
|
def prepare_checkers(self):
|
699
688
|
"""return checkers needed for activated messages and reports"""
|
@@ -750,35 +739,46 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
750
739
|
with _patch_sysmodules():
|
751
740
|
self._parallel_check(files_or_modules)
|
752
741
|
|
753
|
-
|
754
|
-
|
755
|
-
# Prepare configuration for child linters.
|
742
|
+
def _get_jobs_config(self):
|
743
|
+
child_config = collections.OrderedDict()
|
756
744
|
filter_options = {'symbols', 'include-ids', 'long-help'}
|
757
|
-
filter_options.update(
|
758
|
-
config = {}
|
745
|
+
filter_options.update((opt_name for opt_name, _ in self._external_opts))
|
759
746
|
for opt_providers in six.itervalues(self._all_options):
|
760
747
|
for optname, optdict, val in opt_providers.options_and_values():
|
748
|
+
if optdict.get('deprecated'):
|
749
|
+
continue
|
750
|
+
|
761
751
|
if optname not in filter_options:
|
762
|
-
|
763
|
-
|
752
|
+
child_config[optname] = utils._format_option_value(
|
753
|
+
optdict, val)
|
754
|
+
child_config['python3_porting_mode'] = self._python3_porting_mode
|
755
|
+
child_config['plugins'] = self._dynamic_plugins
|
756
|
+
return child_config
|
757
|
+
|
758
|
+
def _parallel_task(self, files_or_modules):
|
759
|
+
# Prepare configuration for child linters.
|
760
|
+
child_config = self._get_jobs_config()
|
764
761
|
|
765
|
-
|
766
|
-
manager = multiprocessing.Manager()
|
767
|
-
tasks_queue = manager.Queue()
|
768
|
-
results_queue = manager.Queue()
|
762
|
+
children = []
|
763
|
+
manager = multiprocessing.Manager()
|
764
|
+
tasks_queue = manager.Queue()
|
765
|
+
results_queue = manager.Queue()
|
769
766
|
|
770
767
|
for _ in range(self.config.jobs):
|
771
|
-
|
772
|
-
|
773
|
-
|
768
|
+
child_linter = ChildLinter(args=(tasks_queue, results_queue,
|
769
|
+
child_config))
|
770
|
+
child_linter.start()
|
771
|
+
children.append(child_linter)
|
774
772
|
|
775
|
-
#
|
776
|
-
|
777
|
-
|
773
|
+
# Send files to child linters.
|
774
|
+
expanded_files = self.expand_files(files_or_modules)
|
775
|
+
for files_or_module in expanded_files:
|
776
|
+
path = files_or_module['path']
|
777
|
+
tasks_queue.put([path])
|
778
778
|
|
779
779
|
# collect results from child linters
|
780
780
|
failed = False
|
781
|
-
for _ in
|
781
|
+
for _ in expanded_files:
|
782
782
|
try:
|
783
783
|
result = results_queue.get()
|
784
784
|
except Exception as ex:
|
@@ -792,8 +792,8 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
792
792
|
# Stop child linters and wait for their completion.
|
793
793
|
for _ in range(self.config.jobs):
|
794
794
|
tasks_queue.put('STOP')
|
795
|
-
for
|
796
|
-
|
795
|
+
for child in children:
|
796
|
+
child.join()
|
797
797
|
|
798
798
|
if failed:
|
799
799
|
print("Error occured, stopping the linter.", file=sys.stderr)
|
@@ -804,9 +804,10 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
804
804
|
self.open()
|
805
805
|
|
806
806
|
all_stats = []
|
807
|
+
module = None
|
807
808
|
for result in self._parallel_task(files_or_modules):
|
808
809
|
(
|
809
|
-
|
810
|
+
_,
|
810
811
|
self.file_state.base_name,
|
811
812
|
module,
|
812
813
|
messages,
|
@@ -814,9 +815,6 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
814
815
|
msg_status
|
815
816
|
) = result
|
816
817
|
|
817
|
-
if file_or_module == files_or_modules[-1]:
|
818
|
-
last_module = module
|
819
|
-
|
820
818
|
for msg in messages:
|
821
819
|
msg = utils.Message(*msg)
|
822
820
|
self.set_current_module(module)
|
@@ -825,8 +823,8 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
825
823
|
all_stats.append(stats)
|
826
824
|
self.msg_status |= msg_status
|
827
825
|
|
828
|
-
self.stats = _merge_stats(
|
829
|
-
self.current_name =
|
826
|
+
self.stats = _merge_stats(all_stats)
|
827
|
+
self.current_name = module
|
830
828
|
|
831
829
|
# Insert stats data to local checkers.
|
832
830
|
for checker in self.get_checkers():
|
@@ -835,16 +833,16 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
835
833
|
|
836
834
|
def _do_check(self, files_or_modules):
|
837
835
|
walker = utils.PyLintASTWalker(self)
|
838
|
-
|
839
|
-
tokencheckers = [c for c in
|
840
|
-
if
|
836
|
+
_checkers = self.prepare_checkers()
|
837
|
+
tokencheckers = [c for c in _checkers
|
838
|
+
if interfaces.implements(c, interfaces.ITokenChecker)
|
841
839
|
and c is not self]
|
842
|
-
rawcheckers = [c for c in
|
843
|
-
if
|
840
|
+
rawcheckers = [c for c in _checkers
|
841
|
+
if interfaces.implements(c, interfaces.IRawChecker)]
|
844
842
|
# notify global begin
|
845
|
-
for checker in
|
843
|
+
for checker in _checkers:
|
846
844
|
checker.open()
|
847
|
-
if
|
845
|
+
if interfaces.implements(checker, interfaces.IAstroidChecker):
|
848
846
|
walker.add_checker(checker)
|
849
847
|
# build ast and check modules or packages
|
850
848
|
for descr in self.expand_files(files_or_modules):
|
@@ -874,8 +872,7 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
874
872
|
self.add_message(msgid, line, None, args)
|
875
873
|
# notify global end
|
876
874
|
self.stats['statement'] = walker.nbstatements
|
877
|
-
|
878
|
-
for checker in checkers:
|
875
|
+
for checker in reversed(_checkers):
|
879
876
|
checker.close()
|
880
877
|
|
881
878
|
def expand_files(self, modules):
|
@@ -909,10 +906,14 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
909
906
|
"""return a ast(roid) representation for a module"""
|
910
907
|
try:
|
911
908
|
return MANAGER.ast_from_file(filepath, modname, source=True)
|
912
|
-
except SyntaxError as ex:
|
913
|
-
self.add_message('syntax-error', line=ex.lineno, args=ex.msg)
|
914
909
|
except astroid.AstroidBuildingException as ex:
|
915
|
-
|
910
|
+
if isinstance(ex.args[0], SyntaxError):
|
911
|
+
ex = ex.args[0]
|
912
|
+
self.add_message('syntax-error',
|
913
|
+
line=ex.lineno or 0,
|
914
|
+
args=ex.msg)
|
915
|
+
else:
|
916
|
+
self.add_message('parse-error', args=ex)
|
916
917
|
except Exception as ex: # pylint: disable=broad-except
|
917
918
|
import traceback
|
918
919
|
traceback.print_exc()
|
@@ -966,6 +967,9 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
966
967
|
|
967
968
|
if persistent run, pickle results for later comparison
|
968
969
|
"""
|
970
|
+
# Display whatever messages are left on the reporter.
|
971
|
+
self.reporter.display_messages(report_nodes.Section())
|
972
|
+
|
969
973
|
if self.file_state.base_name is not None:
|
970
974
|
# load previous results if any
|
971
975
|
previous_stats = config.load_results(self.file_state.base_name)
|
@@ -977,18 +981,13 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
977
981
|
filename = 'pylint_global.' + self.reporter.extension
|
978
982
|
self.reporter.set_output(open(filename, 'w'))
|
979
983
|
else:
|
980
|
-
sect =
|
981
|
-
if self.config.reports
|
982
|
-
self.reporter.
|
984
|
+
sect = report_nodes.Section()
|
985
|
+
if self.config.reports:
|
986
|
+
self.reporter.display_reports(sect)
|
983
987
|
# save results if persistent run
|
984
988
|
if self.config.persistent:
|
985
989
|
config.save_results(self.stats, self.file_state.base_name)
|
986
990
|
else:
|
987
|
-
if self.config.output_format == 'html':
|
988
|
-
# No output will be emitted for the html
|
989
|
-
# reporter if the file doesn't exist, so emit
|
990
|
-
# the results here.
|
991
|
-
self.reporter.display_results(ureports.Section())
|
992
991
|
self.reporter.on_close(self.stats, {})
|
993
992
|
|
994
993
|
# specific reports ########################################################
|
@@ -1011,9 +1010,7 @@ class PyLinter(configuration.OptionsManagerMixIn,
|
|
1011
1010
|
pnote = previous_stats.get('global_note')
|
1012
1011
|
if pnote is not None:
|
1013
1012
|
msg += ' (previous run: %.2f/10, %+.2f)' % (pnote, note - pnote)
|
1014
|
-
|
1015
|
-
msg = '%s\n%s' % (msg, config.get_note_message(note))
|
1016
|
-
sect.append(ureports.Text(msg))
|
1013
|
+
sect.append(report_nodes.Text(msg))
|
1017
1014
|
|
1018
1015
|
# some reporting functions ####################################################
|
1019
1016
|
|
@@ -1023,7 +1020,7 @@ def report_total_messages_stats(sect, stats, previous_stats):
|
|
1023
1020
|
lines += checkers.table_lines_from_stats(stats, previous_stats,
|
1024
1021
|
('convention', 'refactor',
|
1025
1022
|
'warning', 'error'))
|
1026
|
-
sect.append(
|
1023
|
+
sect.append(report_nodes.Table(children=lines, cols=4, rheaders=1))
|
1027
1024
|
|
1028
1025
|
def report_messages_stats(sect, stats, _):
|
1029
1026
|
"""make messages type report"""
|
@@ -1037,7 +1034,7 @@ def report_messages_stats(sect, stats, _):
|
|
1037
1034
|
lines = ('message id', 'occurrences')
|
1038
1035
|
for value, msg_id in in_order:
|
1039
1036
|
lines += (msg_id, str(value))
|
1040
|
-
sect.append(
|
1037
|
+
sect.append(report_nodes.Table(children=lines, cols=2, rheaders=1))
|
1041
1038
|
|
1042
1039
|
def report_messages_by_module_stats(sect, stats, _):
|
1043
1040
|
"""make errors / warnings by modules report"""
|
@@ -1073,7 +1070,7 @@ def report_messages_by_module_stats(sect, stats, _):
|
|
1073
1070
|
lines.append('%.2f' % val)
|
1074
1071
|
if len(lines) == 5:
|
1075
1072
|
raise utils.EmptyReport()
|
1076
|
-
sect.append(
|
1073
|
+
sect.append(report_nodes.Table(children=lines, cols=5, rheaders=1))
|
1077
1074
|
|
1078
1075
|
|
1079
1076
|
# utilities ###################################################################
|
@@ -1231,10 +1228,7 @@ group are mutually exclusive.'),
|
|
1231
1228
|
'disabled and only messages emitted by the porting '
|
1232
1229
|
'checker will be displayed'}),
|
1233
1230
|
|
1234
|
-
('profile',
|
1235
|
-
{'type' : 'yn', 'metavar' : '<y_or_n>',
|
1236
|
-
'default': False, 'hide': True,
|
1237
|
-
'help' : 'Profiled execution.'}),
|
1231
|
+
('profile', utils.deprecated_option(opt_type='yn')),
|
1238
1232
|
|
1239
1233
|
), option_groups=self.option_groups, pylintrc=self._rcfile)
|
1240
1234
|
# register standard checkers
|
@@ -1271,7 +1265,6 @@ group are mutually exclusive.'),
|
|
1271
1265
|
'been issued by analysing pylint output status code\n',
|
1272
1266
|
level=1)
|
1273
1267
|
# read configuration
|
1274
|
-
linter.disable('pointless-except')
|
1275
1268
|
linter.disable('suppressed-message')
|
1276
1269
|
linter.disable('useless-suppression')
|
1277
1270
|
linter.read_config_file()
|
@@ -1279,11 +1272,11 @@ group are mutually exclusive.'),
|
|
1279
1272
|
# run init hook, if present, before loading plugins
|
1280
1273
|
if config_parser.has_option('MASTER', 'init-hook'):
|
1281
1274
|
cb_init_hook('init-hook',
|
1282
|
-
|
1283
|
-
|
1275
|
+
utils._unquote(config_parser.get('MASTER',
|
1276
|
+
'init-hook')))
|
1284
1277
|
# is there some additional plugins in the file configuration, in
|
1285
1278
|
if config_parser.has_option('MASTER', 'load-plugins'):
|
1286
|
-
plugins =
|
1279
|
+
plugins = utils._splitstrip(
|
1287
1280
|
config_parser.get('MASTER', 'load-plugins'))
|
1288
1281
|
linter.load_plugin_modules(plugins)
|
1289
1282
|
# now we can load file config and command line, plugins (which can
|
@@ -1319,19 +1312,9 @@ group are mutually exclusive.'),
|
|
1319
1312
|
|
1320
1313
|
# insert current working directory to the python path to have a correct
|
1321
1314
|
# behaviour
|
1322
|
-
|
1323
|
-
with fix_import_path(args):
|
1324
|
-
print('** profiled run', file=sys.stderr)
|
1325
|
-
import cProfile, pstats
|
1326
|
-
cProfile.runctx('linter.check(%r)' % args, globals(), locals(),
|
1327
|
-
'stones.prof')
|
1328
|
-
data = pstats.Stats('stones.prof')
|
1329
|
-
data.strip_dirs()
|
1330
|
-
data.sort_stats('time', 'calls')
|
1331
|
-
data.print_stats(30)
|
1332
|
-
else:
|
1315
|
+
with fix_import_path(args):
|
1333
1316
|
linter.check(args)
|
1334
|
-
|
1317
|
+
linter.generate_reports()
|
1335
1318
|
if exit:
|
1336
1319
|
sys.exit(self.linter.msg_status)
|
1337
1320
|
|
@@ -1341,7 +1324,7 @@ group are mutually exclusive.'),
|
|
1341
1324
|
|
1342
1325
|
def cb_add_plugins(self, name, value):
|
1343
1326
|
"""callback for option preprocessing (i.e. before option parsing)"""
|
1344
|
-
self._plugins.extend(
|
1327
|
+
self._plugins.extend(utils._splitstrip(value))
|
1345
1328
|
|
1346
1329
|
def cb_error_mode(self, *args, **kwargs):
|
1347
1330
|
"""error mode:
|
@@ -1366,7 +1349,7 @@ group are mutually exclusive.'),
|
|
1366
1349
|
|
1367
1350
|
def cb_help_message(self, option, optname, value, parser):
|
1368
1351
|
"""optik callback for printing some help about a particular message"""
|
1369
|
-
self.linter.msgs_store.help_message(
|
1352
|
+
self.linter.msgs_store.help_message(utils._splitstrip(value))
|
1370
1353
|
sys.exit(0)
|
1371
1354
|
|
1372
1355
|
def cb_full_documentation(self, option, optname, value, parser):
|