libv8 7.3.492.27.1 → 8.4.255.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +11 -14
- data/CHANGELOG.md +10 -0
- data/README.md +10 -11
- data/Rakefile +30 -36
- data/ext/libv8/builder.rb +1 -1
- data/lib/libv8/version.rb +1 -1
- data/libv8.gemspec +1 -3
- data/vendor/depot_tools/{cipd.ps1 → .cipd_impl.ps1} +0 -0
- data/vendor/depot_tools/.gitattributes +1 -1
- data/vendor/depot_tools/.gitignore +7 -2
- data/vendor/depot_tools/.style.yapf +3 -1
- data/vendor/depot_tools/.vpython +55 -0
- data/vendor/depot_tools/.vpython3 +23 -0
- data/vendor/depot_tools/CROS_OWNERS +3 -1
- data/vendor/depot_tools/GOMA_OWNERS +9 -0
- data/vendor/depot_tools/LUCI_OWNERS +5 -0
- data/vendor/depot_tools/OWNERS +21 -6
- data/vendor/depot_tools/PRESUBMIT.py +35 -18
- data/vendor/depot_tools/README.git-cl.md +0 -14
- data/vendor/depot_tools/README.md +1 -1
- data/vendor/depot_tools/WATCHLISTS +2 -2
- data/vendor/depot_tools/auth.py +60 -772
- data/vendor/depot_tools/autoninja +12 -6
- data/vendor/depot_tools/autoninja.bat +14 -6
- data/vendor/depot_tools/autoninja.py +64 -27
- data/vendor/depot_tools/bb +1 -1
- data/vendor/depot_tools/bootstrap/{win/README.md → README.md} +28 -14
- data/vendor/depot_tools/bootstrap/{win/win_tools.py → bootstrap.py} +60 -43
- data/vendor/depot_tools/bootstrap/{win/git-bash.template.sh → git-bash.template.sh} +1 -1
- data/vendor/depot_tools/bootstrap/{win/git.template.bat → git.template.bat} +0 -0
- data/vendor/depot_tools/bootstrap/manifest.txt +27 -0
- data/vendor/depot_tools/bootstrap/manifest_bleeding_edge.txt +27 -0
- data/vendor/depot_tools/bootstrap/{win/profile.d.python.sh → profile.d.python.sh} +0 -0
- data/vendor/depot_tools/bootstrap/{win/python27.bleeding_edge.bat → python27.bat} +0 -0
- data/vendor/depot_tools/bootstrap/{win/python27.new.bat → python3.bat} +3 -3
- data/vendor/depot_tools/bootstrap/{win/win_tools.bat → win_tools.bat} +21 -16
- data/vendor/depot_tools/bootstrap_python3 +35 -0
- data/vendor/depot_tools/cbuildbot +1 -1
- data/vendor/depot_tools/chrome_set_ver +1 -1
- data/vendor/depot_tools/cipd +43 -39
- data/vendor/depot_tools/cipd.bat +2 -2
- data/vendor/depot_tools/cipd_client_version +1 -1
- data/vendor/depot_tools/cipd_client_version.digests +15 -14
- data/vendor/depot_tools/cipd_manifest.txt +31 -8
- data/vendor/depot_tools/cipd_manifest.versions +278 -158
- data/vendor/depot_tools/cit.py +9 -7
- data/vendor/depot_tools/clang_format.py +4 -1
- data/vendor/depot_tools/clang_format_merge_driver.py +10 -8
- data/vendor/depot_tools/compile_single_file.py +7 -2
- data/vendor/depot_tools/cpplint.py +51 -45
- data/vendor/depot_tools/cros +87 -0
- data/vendor/depot_tools/cros_sdk +1 -1
- data/vendor/depot_tools/crosjobs +13 -0
- data/vendor/depot_tools/detect_host_arch.py +0 -1
- data/vendor/depot_tools/dirmd +12 -0
- data/vendor/depot_tools/dirmd.bat +7 -0
- data/vendor/depot_tools/download_from_google_storage.py +47 -27
- data/vendor/depot_tools/ensure_bootstrap +14 -0
- data/vendor/depot_tools/fetch +14 -1
- data/vendor/depot_tools/fetch.bat +14 -1
- data/vendor/depot_tools/fetch.py +5 -7
- data/vendor/depot_tools/fetch_configs/chromium.py +6 -4
- data/vendor/depot_tools/fetch_configs/devtools-frontend.py +44 -0
- data/vendor/depot_tools/fetch_configs/ios_internal.py +10 -19
- data/vendor/depot_tools/fix_encoding.py +19 -5
- data/vendor/depot_tools/gclient +28 -12
- data/vendor/depot_tools/gclient-new-workdir.py +2 -0
- data/vendor/depot_tools/gclient.bat +18 -1
- data/vendor/depot_tools/gclient.py +160 -119
- data/vendor/depot_tools/gclient_eval.py +119 -107
- data/vendor/depot_tools/gclient_paths.py +67 -57
- data/vendor/depot_tools/gclient_scm.py +181 -159
- data/vendor/depot_tools/gclient_utils.py +177 -124
- data/vendor/depot_tools/gerrit_client.py +21 -13
- data/vendor/depot_tools/gerrit_util.py +188 -228
- data/vendor/depot_tools/git-cache +1 -1
- data/vendor/depot_tools/git-cl +1 -1
- data/vendor/depot_tools/git-drover +1 -1
- data/vendor/depot_tools/git-find-releases +1 -1
- data/vendor/depot_tools/git-footers +1 -1
- data/vendor/depot_tools/git-freeze +1 -1
- data/vendor/depot_tools/git-hyper-blame +1 -1
- data/vendor/depot_tools/git-map +1 -1
- data/vendor/depot_tools/git-map-branches +1 -1
- data/vendor/depot_tools/git-mark-merge-base +1 -1
- data/vendor/depot_tools/git-nav-downstream +1 -1
- data/vendor/depot_tools/git-new-branch +1 -1
- data/vendor/depot_tools/git-number +1 -1
- data/vendor/depot_tools/git-rebase-update +1 -1
- data/vendor/depot_tools/git-rename-branch +1 -1
- data/vendor/depot_tools/git-reparent-branch +1 -1
- data/vendor/depot_tools/git-retry +1 -1
- data/vendor/depot_tools/git-squash-branch +1 -1
- data/vendor/depot_tools/git-thaw +1 -1
- data/vendor/depot_tools/git-upstream-diff +1 -1
- data/vendor/depot_tools/git_cache.py +255 -360
- data/vendor/depot_tools/git_cl.py +1562 -2059
- data/vendor/depot_tools/git_cl_completion.sh +16 -2
- data/vendor/depot_tools/git_common.py +77 -32
- data/vendor/depot_tools/git_drover.py +17 -8
- data/vendor/depot_tools/git_find_releases.py +11 -9
- data/vendor/depot_tools/git_footers.py +13 -9
- data/vendor/depot_tools/git_freezer.py +3 -1
- data/vendor/depot_tools/git_hyper_blame.py +25 -32
- data/vendor/depot_tools/git_map.py +115 -93
- data/vendor/depot_tools/git_map_branches.py +11 -10
- data/vendor/depot_tools/git_mark_merge_base.py +8 -6
- data/vendor/depot_tools/git_nav_downstream.py +9 -6
- data/vendor/depot_tools/git_new_branch.py +39 -33
- data/vendor/depot_tools/git_number.py +28 -17
- data/vendor/depot_tools/git_rebase_update.py +50 -49
- data/vendor/depot_tools/git_rename_branch.py +2 -2
- data/vendor/depot_tools/git_reparent_branch.py +8 -6
- data/vendor/depot_tools/git_upstream_diff.py +4 -2
- data/vendor/depot_tools/gn.py +6 -4
- data/vendor/depot_tools/goma_auth +12 -0
- data/vendor/depot_tools/goma_auth.bat +8 -0
- data/vendor/depot_tools/goma_ctl +12 -0
- data/vendor/depot_tools/goma_ctl.bat +8 -0
- data/vendor/depot_tools/gsutil.py +5 -2
- data/vendor/depot_tools/gsutil.py.bat +8 -0
- data/vendor/depot_tools/gsutil.vpython +3 -1
- data/vendor/depot_tools/infra/config/OWNERS +2 -2
- data/vendor/depot_tools/infra/config/recipes.cfg +3 -2
- data/vendor/depot_tools/led +1 -1
- data/vendor/depot_tools/lockfile.py +116 -0
- data/vendor/depot_tools/luci-auth +1 -1
- data/vendor/depot_tools/lucicfg +1 -1
- data/vendor/depot_tools/mac_toolchain +1 -1
- data/vendor/depot_tools/man/html/depot_tools.html +1 -1
- data/vendor/depot_tools/man/html/depot_tools_tutorial.html +31 -25
- data/vendor/depot_tools/man/html/git-cl.html +1 -1
- data/vendor/depot_tools/man/html/git-drover.html +18 -18
- data/vendor/depot_tools/man/html/git-footers.html +1 -1
- data/vendor/depot_tools/man/html/git-freeze.html +3 -3
- data/vendor/depot_tools/man/html/git-hyper-blame.html +1 -1
- data/vendor/depot_tools/man/html/git-map-branches.html +2 -2
- data/vendor/depot_tools/man/html/git-map.html +1 -1
- data/vendor/depot_tools/man/html/git-mark-merge-base.html +1 -1
- data/vendor/depot_tools/man/html/git-nav-downstream.html +3 -3
- data/vendor/depot_tools/man/html/git-nav-upstream.html +12 -6
- data/vendor/depot_tools/man/html/git-new-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-rebase-update.html +20 -1
- data/vendor/depot_tools/man/html/git-rename-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-reparent-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-retry.html +1 -1
- data/vendor/depot_tools/man/html/git-squash-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-thaw.html +1 -1
- data/vendor/depot_tools/man/html/git-upstream-diff.html +10 -6
- data/vendor/depot_tools/man/man1/git-cl.1 +4 -4
- data/vendor/depot_tools/man/man1/git-drover.1 +21 -21
- data/vendor/depot_tools/man/man1/git-footers.1 +4 -4
- data/vendor/depot_tools/man/man1/git-freeze.1 +6 -6
- data/vendor/depot_tools/man/man1/git-hyper-blame.1 +4 -4
- data/vendor/depot_tools/man/man1/git-map-branches.1 +4 -4
- data/vendor/depot_tools/man/man1/git-map.1 +4 -4
- data/vendor/depot_tools/man/man1/git-mark-merge-base.1 +4 -4
- data/vendor/depot_tools/man/man1/git-nav-downstream.1 +6 -6
- data/vendor/depot_tools/man/man1/git-nav-upstream.1 +15 -9
- data/vendor/depot_tools/man/man1/git-new-branch.1 +3 -3
- data/vendor/depot_tools/man/man1/git-rebase-update.1 +14 -4
- data/vendor/depot_tools/man/man1/git-rename-branch.1 +4 -4
- data/vendor/depot_tools/man/man1/git-reparent-branch.1 +4 -4
- data/vendor/depot_tools/man/man1/git-retry.1 +4 -4
- data/vendor/depot_tools/man/man1/git-squash-branch.1 +4 -4
- data/vendor/depot_tools/man/man1/git-thaw.1 +4 -4
- data/vendor/depot_tools/man/man1/git-upstream-diff.1 +7 -13
- data/vendor/depot_tools/man/man7/depot_tools.7 +4 -4
- data/vendor/depot_tools/man/man7/depot_tools_tutorial.7 +31 -25
- data/vendor/depot_tools/man/src/common_demo_functions.sh +2 -2
- data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +3 -3
- data/vendor/depot_tools/man/src/filter_demo_output.py +4 -2
- data/vendor/depot_tools/man/src/git-new-branch.txt +2 -1
- data/vendor/depot_tools/man/src/git-rebase-update.txt +8 -1
- data/vendor/depot_tools/metrics.README.md +8 -5
- data/vendor/depot_tools/metrics.py +7 -6
- data/vendor/depot_tools/metrics_utils.py +4 -14
- data/vendor/depot_tools/my_activity.py +85 -251
- data/vendor/depot_tools/ninja +1 -0
- data/vendor/depot_tools/ninja-mac +0 -0
- data/vendor/depot_tools/ninjalog_uploader.py +146 -145
- data/vendor/depot_tools/ninjalog_uploader_wrapper.py +69 -60
- data/vendor/depot_tools/owners.py +156 -43
- data/vendor/depot_tools/owners_finder.py +28 -14
- data/vendor/depot_tools/post_build_ninja_summary.py +76 -48
- data/vendor/depot_tools/presubmit_canned_checks.py +293 -106
- data/vendor/depot_tools/presubmit_support.py +527 -333
- data/vendor/depot_tools/prpc +1 -1
- data/vendor/depot_tools/pylint +2 -12
- data/vendor/depot_tools/pylint-1.5 +78 -0
- data/vendor/depot_tools/pylint-1.6 +78 -0
- data/vendor/depot_tools/pylint-1.7 +78 -0
- data/vendor/depot_tools/pylint-1.8 +78 -0
- data/vendor/depot_tools/pylint-1.9 +78 -0
- data/vendor/depot_tools/{depot-tools-auth.bat → pylint.bat} +2 -2
- data/vendor/depot_tools/pylint_main.py +45 -0
- data/vendor/depot_tools/pylintrc +14 -1
- data/vendor/depot_tools/python-bin/python3 +7 -0
- data/vendor/depot_tools/python_runner.sh +13 -8
- data/vendor/depot_tools/rdb +12 -0
- data/vendor/depot_tools/rdb.bat +7 -0
- data/vendor/depot_tools/recipes/OWNERS +0 -1
- data/vendor/depot_tools/recipes/README.recipes.md +218 -151
- data/vendor/depot_tools/recipes/recipe_modules/OWNERS +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +17 -16
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +127 -78
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +19 -4
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +18 -3
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +19 -4
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +28 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/input_commit_with_id_without_repo.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/multiple_patch_refs.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{with_manifest_name.json → no_cp_checkout_HEAD.json} +25 -15
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_branch_head.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_specific_commit.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_master.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/refs.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/resolve_chromium_fixed_version.json +117 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +17 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +41 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +24 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +38 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +36 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +0 -5
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +95 -22
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +187 -114
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +2 -2
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/do_not_retry_patch_failures_in_cq.py +42 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/__init__.py +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +2 -2
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +2 -4
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +26 -6
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +23 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +23 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/test_api.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +4 -1
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +4 -2
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +3 -1
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +4 -2
- data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +2 -1
- data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +82 -13
- data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +23 -11
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +3 -4
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +3 -6
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +3 -4
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +7 -7
- data/vendor/depot_tools/recipes/recipe_modules/gclient/resources/diff_deps.py +16 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/test_api.py +4 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/basic.json +55 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/dont have revision yet.json +84 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/no change, exception.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/windows.json +55 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.py +88 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +9 -21
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/sync_failure.py +24 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +2 -1
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +7 -12
- data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +0 -2
- data/vendor/depot_tools/recipes/recipe_modules/git/api.py +9 -17
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +3 -13
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +4 -12
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +2 -10
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +1 -7
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +1 -7
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +0 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +3 -10
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +3 -11
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +3 -13
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +0 -5
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/__init__.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +7 -13
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +21 -16
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.py +1 -2
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +2 -2
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +23 -8
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +52 -1
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.py +15 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +32 -8
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/ancient_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/automatic_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/explicit_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +5 -4
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +21 -2
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +20 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +235 -3
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +13 -5
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.py +5 -1
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/properties.proto +14 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/test_api.py +19 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/execute.py +247 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/prepare.py +49 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +33 -45
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +64 -21
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +64 -21
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +1 -22
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +1 -22
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +5 -32
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_fetch_ref_timeout.py +29 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.expected/basic.json +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.py +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_target_ref.py +32 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +2 -1
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +1 -6
- data/vendor/depot_tools/recipes/recipes.py +49 -28
- data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +11 -6
- data/vendor/depot_tools/repo +698 -540
- data/vendor/depot_tools/roll-dep +14 -1
- data/vendor/depot_tools/roll-dep.bat +10 -1
- data/vendor/depot_tools/roll_dep.py +15 -10
- data/vendor/depot_tools/scm.py +95 -75
- data/vendor/depot_tools/setup_color.py +36 -2
- data/vendor/depot_tools/split_cl.py +44 -32
- data/vendor/depot_tools/subcommand.py +6 -6
- data/vendor/depot_tools/subprocess2.py +38 -322
- data/vendor/depot_tools/third_party/colorama/LICENSE.txt +0 -1
- data/vendor/depot_tools/third_party/colorama/README.chromium +4 -5
- data/vendor/depot_tools/third_party/colorama/README.rst +346 -0
- data/vendor/depot_tools/third_party/colorama/__init__.py +3 -4
- data/vendor/depot_tools/third_party/colorama/ansi.py +82 -30
- data/vendor/depot_tools/third_party/colorama/ansitowin32.py +105 -37
- data/vendor/depot_tools/third_party/colorama/initialise.py +39 -15
- data/vendor/depot_tools/third_party/colorama/win32.py +46 -28
- data/vendor/depot_tools/third_party/colorama/winterm.py +80 -31
- data/vendor/depot_tools/update_depot_tools +18 -8
- data/vendor/depot_tools/update_depot_tools.bat +19 -15
- data/vendor/depot_tools/upload_metrics.py +7 -6
- data/vendor/depot_tools/upload_to_google_storage.py +23 -16
- data/vendor/depot_tools/vpython +4 -4
- data/vendor/depot_tools/vpython.bat +1 -1
- data/vendor/depot_tools/vpython3 +55 -0
- data/vendor/depot_tools/vpython3.bat +12 -0
- data/vendor/depot_tools/watchlists.py +14 -11
- data/vendor/depot_tools/weekly +4 -2
- data/vendor/depot_tools/win32imports.py +61 -0
- data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +49 -41
- data/vendor/depot_tools/win_toolchain/package_from_installed.py +142 -149
- data/vendor/depot_tools/wtf +5 -3
- data/vendor/depot_tools/yapf +5 -1
- metadata +68 -343
- data/vendor/depot_tools/README.testing +0 -23
- data/vendor/depot_tools/annotated_gclient.py +0 -89
- data/vendor/depot_tools/appengine_mapper.py +0 -23
- data/vendor/depot_tools/bootstrap/win/manifest.txt +0 -20
- data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +0 -20
- data/vendor/depot_tools/bootstrap/win/pylint.new.bat +0 -7
- data/vendor/depot_tools/buildbucket.py +0 -186
- data/vendor/depot_tools/checkout.py +0 -431
- data/vendor/depot_tools/cros +0 -1
- data/vendor/depot_tools/dart_format.py +0 -58
- data/vendor/depot_tools/depot-tools-auth +0 -8
- data/vendor/depot_tools/depot-tools-auth.py +0 -102
- data/vendor/depot_tools/my_reviews.py +0 -396
- data/vendor/depot_tools/patch.py +0 -548
- data/vendor/depot_tools/pylint.py +0 -30
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +0 -239
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_luci.json +0 -222
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/__init__.py +0 -4
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/api.py +0 -29
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/basic.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_linux.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_mac.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_win.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_linux.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_mac.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_win.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_linux.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_mac.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_win.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.py +0 -33
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/path_config.py +0 -66
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/set_failure_hash_with_no_steps.json +0 -11
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +0 -45
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +0 -45
- data/vendor/depot_tools/rietveld.py +0 -779
- data/vendor/depot_tools/roll-dep-svn +0 -8
- data/vendor/depot_tools/roll-dep-svn.bat +0 -12
- data/vendor/depot_tools/roll_dep_svn.py +0 -430
- data/vendor/depot_tools/support/chromite_wrapper +0 -96
- data/vendor/depot_tools/third_party/boto/LICENSE +0 -18
- data/vendor/depot_tools/third_party/boto/README.chromium +0 -43
- data/vendor/depot_tools/third_party/boto/README.rst +0 -163
- data/vendor/depot_tools/third_party/boto/__init__.py +0 -793
- data/vendor/depot_tools/third_party/boto/auth.py +0 -682
- data/vendor/depot_tools/third_party/boto/auth_handler.py +0 -58
- data/vendor/depot_tools/third_party/boto/cacerts/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/cacerts/cacerts.txt +0 -2183
- data/vendor/depot_tools/third_party/boto/compat.py +0 -28
- data/vendor/depot_tools/third_party/boto/connection.py +0 -1081
- data/vendor/depot_tools/third_party/boto/contrib/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/contrib/ymlmessage.py +0 -52
- data/vendor/depot_tools/third_party/boto/core/README +0 -58
- data/vendor/depot_tools/third_party/boto/core/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/core/auth.py +0 -78
- data/vendor/depot_tools/third_party/boto/core/credentials.py +0 -154
- data/vendor/depot_tools/third_party/boto/core/dictresponse.py +0 -178
- data/vendor/depot_tools/third_party/boto/core/service.py +0 -67
- data/vendor/depot_tools/third_party/boto/datapipeline/__init__.py +0 -0
- data/vendor/depot_tools/third_party/boto/datapipeline/exceptions.py +0 -42
- data/vendor/depot_tools/third_party/boto/datapipeline/layer1.py +0 -546
- data/vendor/depot_tools/third_party/boto/ecs/__init__.py +0 -90
- data/vendor/depot_tools/third_party/boto/ecs/item.py +0 -153
- data/vendor/depot_tools/third_party/boto/exception.py +0 -476
- data/vendor/depot_tools/third_party/boto/file/README +0 -49
- data/vendor/depot_tools/third_party/boto/file/__init__.py +0 -28
- data/vendor/depot_tools/third_party/boto/file/bucket.py +0 -112
- data/vendor/depot_tools/third_party/boto/file/connection.py +0 -33
- data/vendor/depot_tools/third_party/boto/file/key.py +0 -199
- data/vendor/depot_tools/third_party/boto/file/simpleresultset.py +0 -30
- data/vendor/depot_tools/third_party/boto/fps/__init__.py +0 -21
- data/vendor/depot_tools/third_party/boto/fps/connection.py +0 -369
- data/vendor/depot_tools/third_party/boto/fps/exception.py +0 -344
- data/vendor/depot_tools/third_party/boto/fps/response.py +0 -175
- data/vendor/depot_tools/third_party/boto/gs/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/gs/acl.py +0 -304
- data/vendor/depot_tools/third_party/boto/gs/bucket.py +0 -870
- data/vendor/depot_tools/third_party/boto/gs/bucketlistresultset.py +0 -64
- data/vendor/depot_tools/third_party/boto/gs/connection.py +0 -103
- data/vendor/depot_tools/third_party/boto/gs/cors.py +0 -169
- data/vendor/depot_tools/third_party/boto/gs/key.py +0 -704
- data/vendor/depot_tools/third_party/boto/gs/resumable_upload_handler.py +0 -659
- data/vendor/depot_tools/third_party/boto/gs/user.py +0 -54
- data/vendor/depot_tools/third_party/boto/handler.py +0 -44
- data/vendor/depot_tools/third_party/boto/https_connection.py +0 -124
- data/vendor/depot_tools/third_party/boto/jsonresponse.py +0 -163
- data/vendor/depot_tools/third_party/boto/manage/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/manage/cmdshell.py +0 -241
- data/vendor/depot_tools/third_party/boto/manage/propget.py +0 -64
- data/vendor/depot_tools/third_party/boto/manage/server.py +0 -556
- data/vendor/depot_tools/third_party/boto/manage/task.py +0 -175
- data/vendor/depot_tools/third_party/boto/manage/test_manage.py +0 -34
- data/vendor/depot_tools/third_party/boto/manage/volume.py +0 -420
- data/vendor/depot_tools/third_party/boto/mashups/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/mashups/interactive.py +0 -97
- data/vendor/depot_tools/third_party/boto/mashups/iobject.py +0 -115
- data/vendor/depot_tools/third_party/boto/mashups/order.py +0 -211
- data/vendor/depot_tools/third_party/boto/mashups/server.py +0 -395
- data/vendor/depot_tools/third_party/boto/plugin.py +0 -90
- data/vendor/depot_tools/third_party/boto/provider.py +0 -337
- data/vendor/depot_tools/third_party/boto/pyami/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/pyami/bootstrap.py +0 -134
- data/vendor/depot_tools/third_party/boto/pyami/config.py +0 -229
- data/vendor/depot_tools/third_party/boto/pyami/copybot.cfg +0 -60
- data/vendor/depot_tools/third_party/boto/pyami/copybot.py +0 -97
- data/vendor/depot_tools/third_party/boto/pyami/helloworld.py +0 -28
- data/vendor/depot_tools/third_party/boto/pyami/launch_ami.py +0 -178
- data/vendor/depot_tools/third_party/boto/pyami/scriptbase.py +0 -44
- data/vendor/depot_tools/third_party/boto/pyami/startup.py +0 -60
- data/vendor/depot_tools/third_party/boto/regioninfo.py +0 -63
- data/vendor/depot_tools/third_party/boto/resultset.py +0 -169
- data/vendor/depot_tools/third_party/boto/roboto/__init__.py +0 -1
- data/vendor/depot_tools/third_party/boto/roboto/awsqueryrequest.py +0 -504
- data/vendor/depot_tools/third_party/boto/roboto/awsqueryservice.py +0 -121
- data/vendor/depot_tools/third_party/boto/roboto/param.py +0 -147
- data/vendor/depot_tools/third_party/boto/s3/__init__.py +0 -84
- data/vendor/depot_tools/third_party/boto/s3/acl.py +0 -164
- data/vendor/depot_tools/third_party/boto/s3/bucket.py +0 -1634
- data/vendor/depot_tools/third_party/boto/s3/bucketlistresultset.py +0 -139
- data/vendor/depot_tools/third_party/boto/s3/bucketlogging.py +0 -83
- data/vendor/depot_tools/third_party/boto/s3/connection.py +0 -540
- data/vendor/depot_tools/third_party/boto/s3/cors.py +0 -210
- data/vendor/depot_tools/third_party/boto/s3/deletemarker.py +0 -55
- data/vendor/depot_tools/third_party/boto/s3/key.py +0 -1712
- data/vendor/depot_tools/third_party/boto/s3/keyfile.py +0 -134
- data/vendor/depot_tools/third_party/boto/s3/lifecycle.py +0 -231
- data/vendor/depot_tools/third_party/boto/s3/multidelete.py +0 -138
- data/vendor/depot_tools/third_party/boto/s3/multipart.py +0 -315
- data/vendor/depot_tools/third_party/boto/s3/prefix.py +0 -42
- data/vendor/depot_tools/third_party/boto/s3/resumable_download_handler.py +0 -339
- data/vendor/depot_tools/third_party/boto/s3/tagging.py +0 -71
- data/vendor/depot_tools/third_party/boto/s3/user.py +0 -49
- data/vendor/depot_tools/third_party/boto/s3/website.py +0 -237
- data/vendor/depot_tools/third_party/boto/services/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/services/bs.py +0 -179
- data/vendor/depot_tools/third_party/boto/services/message.py +0 -58
- data/vendor/depot_tools/third_party/boto/services/result.py +0 -136
- data/vendor/depot_tools/third_party/boto/services/service.py +0 -161
- data/vendor/depot_tools/third_party/boto/services/servicedef.py +0 -91
- data/vendor/depot_tools/third_party/boto/services/sonofmmm.cfg +0 -43
- data/vendor/depot_tools/third_party/boto/services/sonofmmm.py +0 -81
- data/vendor/depot_tools/third_party/boto/services/submit.py +0 -88
- data/vendor/depot_tools/third_party/boto/ses/__init__.py +0 -54
- data/vendor/depot_tools/third_party/boto/ses/connection.py +0 -521
- data/vendor/depot_tools/third_party/boto/ses/exceptions.py +0 -77
- data/vendor/depot_tools/third_party/boto/storage_uri.py +0 -835
- data/vendor/depot_tools/third_party/boto/sts/__init__.py +0 -55
- data/vendor/depot_tools/third_party/boto/sts/connection.py +0 -207
- data/vendor/depot_tools/third_party/boto/sts/credentials.py +0 -215
- data/vendor/depot_tools/third_party/boto/utils.py +0 -927
- data/vendor/depot_tools/third_party/colorama/README.txt +0 -304
- data/vendor/depot_tools/third_party/fancy_urllib/README +0 -22
- data/vendor/depot_tools/third_party/fancy_urllib/__init__.py +0 -460
- data/vendor/depot_tools/third_party/logilab/README.chromium +0 -6
- data/vendor/depot_tools/third_party/logilab/__init__.py +0 -0
- data/vendor/depot_tools/third_party/logilab/astroid/LICENSE.txt +0 -340
- data/vendor/depot_tools/third_party/logilab/astroid/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/astroid/__init__.py +0 -136
- data/vendor/depot_tools/third_party/logilab/astroid/__pkginfo__.py +0 -42
- data/vendor/depot_tools/third_party/logilab/astroid/arguments.py +0 -233
- data/vendor/depot_tools/third_party/logilab/astroid/as_string.py +0 -548
- data/vendor/depot_tools/third_party/logilab/astroid/astpeephole.py +0 -86
- data/vendor/depot_tools/third_party/logilab/astroid/bases.py +0 -636
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_builtin_inference.py +0 -336
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_dateutil.py +0 -15
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_gi.py +0 -195
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_mechanize.py +0 -18
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_nose.py +0 -82
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_numpy.py +0 -62
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_pytest.py +0 -76
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_qt.py +0 -44
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_six.py +0 -288
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_ssl.py +0 -65
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_stdlib.py +0 -473
- data/vendor/depot_tools/third_party/logilab/astroid/builder.py +0 -263
- data/vendor/depot_tools/third_party/logilab/astroid/context.py +0 -81
- data/vendor/depot_tools/third_party/logilab/astroid/decorators.py +0 -75
- data/vendor/depot_tools/third_party/logilab/astroid/exceptions.py +0 -71
- data/vendor/depot_tools/third_party/logilab/astroid/inference.py +0 -359
- data/vendor/depot_tools/third_party/logilab/astroid/manager.py +0 -267
- data/vendor/depot_tools/third_party/logilab/astroid/mixins.py +0 -147
- data/vendor/depot_tools/third_party/logilab/astroid/modutils.py +0 -741
- data/vendor/depot_tools/third_party/logilab/astroid/node_classes.py +0 -1053
- data/vendor/depot_tools/third_party/logilab/astroid/nodes.py +0 -87
- data/vendor/depot_tools/third_party/logilab/astroid/objects.py +0 -186
- data/vendor/depot_tools/third_party/logilab/astroid/protocols.py +0 -470
- data/vendor/depot_tools/third_party/logilab/astroid/raw_building.py +0 -390
- data/vendor/depot_tools/third_party/logilab/astroid/rebuilder.py +0 -989
- data/vendor/depot_tools/third_party/logilab/astroid/scoped_nodes.py +0 -1716
- data/vendor/depot_tools/third_party/logilab/astroid/test_utils.py +0 -201
- data/vendor/depot_tools/third_party/logilab/astroid/transforms.py +0 -96
- data/vendor/depot_tools/third_party/logilab/astroid/util.py +0 -89
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/LICENSE +0 -19
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/__init__.py +0 -20
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/cext.c +0 -1421
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/compat.py +0 -9
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/simple.py +0 -246
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/slots.py +0 -414
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/utils.py +0 -13
- data/vendor/depot_tools/third_party/logilab/wrapt/LICENSE +0 -24
- data/vendor/depot_tools/third_party/logilab/wrapt/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/wrapt/__init__.py +0 -19
- data/vendor/depot_tools/third_party/logilab/wrapt/_wrappers.c +0 -2729
- data/vendor/depot_tools/third_party/logilab/wrapt/arguments.py +0 -96
- data/vendor/depot_tools/third_party/logilab/wrapt/decorators.py +0 -512
- data/vendor/depot_tools/third_party/logilab/wrapt/importer.py +0 -228
- data/vendor/depot_tools/third_party/logilab/wrapt/wrappers.py +0 -901
- data/vendor/depot_tools/third_party/mock/LICENSE.txt +0 -26
- data/vendor/depot_tools/third_party/mock/README.chromium +0 -24
- data/vendor/depot_tools/third_party/mock/__init__.py +0 -2366
- data/vendor/depot_tools/third_party/oauth2client/LICENSE +0 -202
- data/vendor/depot_tools/third_party/oauth2client/MODIFICATIONS.diff +0 -66
- data/vendor/depot_tools/third_party/oauth2client/README.chromium +0 -15
- data/vendor/depot_tools/third_party/oauth2client/__init__.py +0 -5
- data/vendor/depot_tools/third_party/oauth2client/anyjson.py +0 -32
- data/vendor/depot_tools/third_party/oauth2client/appengine.py +0 -963
- data/vendor/depot_tools/third_party/oauth2client/client.py +0 -1363
- data/vendor/depot_tools/third_party/oauth2client/clientsecrets.py +0 -153
- data/vendor/depot_tools/third_party/oauth2client/crypt.py +0 -377
- data/vendor/depot_tools/third_party/oauth2client/django_orm.py +0 -134
- data/vendor/depot_tools/third_party/oauth2client/file.py +0 -124
- data/vendor/depot_tools/third_party/oauth2client/gce.py +0 -90
- data/vendor/depot_tools/third_party/oauth2client/keyring_storage.py +0 -109
- data/vendor/depot_tools/third_party/oauth2client/locked_file.py +0 -373
- data/vendor/depot_tools/third_party/oauth2client/multistore_file.py +0 -465
- data/vendor/depot_tools/third_party/oauth2client/old_run.py +0 -160
- data/vendor/depot_tools/third_party/oauth2client/tools.py +0 -243
- data/vendor/depot_tools/third_party/oauth2client/util.py +0 -196
- data/vendor/depot_tools/third_party/oauth2client/xsrfutil.py +0 -113
- data/vendor/depot_tools/third_party/protobuf26/README.chromium +0 -23
- data/vendor/depot_tools/third_party/protobuf26/__init__.py +0 -0
- data/vendor/depot_tools/third_party/protobuf26/compiler/__init__.py +0 -0
- data/vendor/depot_tools/third_party/protobuf26/compiler/plugin_pb2.py +0 -184
- data/vendor/depot_tools/third_party/protobuf26/descriptor.py +0 -849
- data/vendor/depot_tools/third_party/protobuf26/descriptor_database.py +0 -137
- data/vendor/depot_tools/third_party/protobuf26/descriptor_pb2.py +0 -1522
- data/vendor/depot_tools/third_party/protobuf26/descriptor_pool.py +0 -643
- data/vendor/depot_tools/third_party/protobuf26/internal/__init__.py +0 -0
- data/vendor/depot_tools/third_party/protobuf26/internal/api_implementation.py +0 -89
- data/vendor/depot_tools/third_party/protobuf26/internal/containers.py +0 -269
- data/vendor/depot_tools/third_party/protobuf26/internal/cpp_message.py +0 -663
- data/vendor/depot_tools/third_party/protobuf26/internal/decoder.py +0 -831
- data/vendor/depot_tools/third_party/protobuf26/internal/encoder.py +0 -788
- data/vendor/depot_tools/third_party/protobuf26/internal/enum_type_wrapper.py +0 -89
- data/vendor/depot_tools/third_party/protobuf26/internal/message_listener.py +0 -78
- data/vendor/depot_tools/third_party/protobuf26/internal/python_message.py +0 -1247
- data/vendor/depot_tools/third_party/protobuf26/internal/type_checkers.py +0 -328
- data/vendor/depot_tools/third_party/protobuf26/internal/wire_format.py +0 -268
- data/vendor/depot_tools/third_party/protobuf26/message.py +0 -284
- data/vendor/depot_tools/third_party/protobuf26/message_factory.py +0 -155
- data/vendor/depot_tools/third_party/protobuf26/reflection.py +0 -205
- data/vendor/depot_tools/third_party/protobuf26/service.py +0 -226
- data/vendor/depot_tools/third_party/protobuf26/service_reflection.py +0 -284
- data/vendor/depot_tools/third_party/protobuf26/symbol_database.py +0 -185
- data/vendor/depot_tools/third_party/protobuf26/text_encoding.py +0 -110
- data/vendor/depot_tools/third_party/protobuf26/text_format.py +0 -873
- data/vendor/depot_tools/third_party/pylint.py +0 -37
- data/vendor/depot_tools/third_party/pylint/LICENSE.txt +0 -340
- data/vendor/depot_tools/third_party/pylint/README.chromium +0 -30
- data/vendor/depot_tools/third_party/pylint/__init__.py +0 -46
- data/vendor/depot_tools/third_party/pylint/__main__.py +0 -3
- data/vendor/depot_tools/third_party/pylint/__pkginfo__.py +0 -80
- data/vendor/depot_tools/third_party/pylint/checkers/__init__.py +0 -123
- data/vendor/depot_tools/third_party/pylint/checkers/async.py +0 -82
- data/vendor/depot_tools/third_party/pylint/checkers/base.py +0 -2010
- data/vendor/depot_tools/third_party/pylint/checkers/classes.py +0 -1120
- data/vendor/depot_tools/third_party/pylint/checkers/design_analysis.py +0 -348
- data/vendor/depot_tools/third_party/pylint/checkers/exceptions.py +0 -369
- data/vendor/depot_tools/third_party/pylint/checkers/format.py +0 -993
- data/vendor/depot_tools/third_party/pylint/checkers/imports.py +0 -654
- data/vendor/depot_tools/third_party/pylint/checkers/logging.py +0 -258
- data/vendor/depot_tools/third_party/pylint/checkers/misc.py +0 -105
- data/vendor/depot_tools/third_party/pylint/checkers/newstyle.py +0 -169
- data/vendor/depot_tools/third_party/pylint/checkers/python3.py +0 -591
- data/vendor/depot_tools/third_party/pylint/checkers/raw_metrics.py +0 -129
- data/vendor/depot_tools/third_party/pylint/checkers/similar.py +0 -371
- data/vendor/depot_tools/third_party/pylint/checkers/spelling.py +0 -264
- data/vendor/depot_tools/third_party/pylint/checkers/stdlib.py +0 -280
- data/vendor/depot_tools/third_party/pylint/checkers/strings.py +0 -618
- data/vendor/depot_tools/third_party/pylint/checkers/typecheck.py +0 -974
- data/vendor/depot_tools/third_party/pylint/checkers/utils.py +0 -741
- data/vendor/depot_tools/third_party/pylint/checkers/variables.py +0 -1191
- data/vendor/depot_tools/third_party/pylint/config.py +0 -820
- data/vendor/depot_tools/third_party/pylint/epylint.py +0 -181
- data/vendor/depot_tools/third_party/pylint/extensions/__init__.py +0 -0
- data/vendor/depot_tools/third_party/pylint/extensions/check_docs.py +0 -311
- data/vendor/depot_tools/third_party/pylint/extensions/check_elif.py +0 -62
- data/vendor/depot_tools/third_party/pylint/graph.py +0 -179
- data/vendor/depot_tools/third_party/pylint/gui.py +0 -531
- data/vendor/depot_tools/third_party/pylint/interfaces.py +0 -102
- data/vendor/depot_tools/third_party/pylint/lint.py +0 -1381
- data/vendor/depot_tools/third_party/pylint/pyreverse/__init__.py +0 -5
- data/vendor/depot_tools/third_party/pylint/pyreverse/diadefslib.py +0 -230
- data/vendor/depot_tools/third_party/pylint/pyreverse/diagrams.py +0 -258
- data/vendor/depot_tools/third_party/pylint/pyreverse/inspector.py +0 -372
- data/vendor/depot_tools/third_party/pylint/pyreverse/main.py +0 -147
- data/vendor/depot_tools/third_party/pylint/pyreverse/utils.py +0 -210
- data/vendor/depot_tools/third_party/pylint/pyreverse/vcgutils.py +0 -198
- data/vendor/depot_tools/third_party/pylint/pyreverse/writer.py +0 -198
- data/vendor/depot_tools/third_party/pylint/reporters/__init__.py +0 -149
- data/vendor/depot_tools/third_party/pylint/reporters/guireporter.py +0 -27
- data/vendor/depot_tools/third_party/pylint/reporters/html.py +0 -108
- data/vendor/depot_tools/third_party/pylint/reporters/json.py +0 -64
- data/vendor/depot_tools/third_party/pylint/reporters/text.py +0 -237
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/__init__.py +0 -106
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/html_writer.py +0 -93
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/nodes.py +0 -181
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/text_writer.py +0 -99
- data/vendor/depot_tools/third_party/pylint/testutils.py +0 -414
- data/vendor/depot_tools/third_party/pylint/utils.py +0 -1148
- data/vendor/depot_tools/third_party/pymox/COPYING +0 -202
- data/vendor/depot_tools/third_party/pymox/MANIFEST.in +0 -5
- data/vendor/depot_tools/third_party/pymox/README +0 -56
- data/vendor/depot_tools/third_party/pymox/__init__.py +0 -0
- data/vendor/depot_tools/third_party/pymox/mox.py +0 -1643
- data/vendor/depot_tools/third_party/pymox/mox_test.py +0 -1708
- data/vendor/depot_tools/third_party/pymox/mox_test_helper.py +0 -76
- data/vendor/depot_tools/third_party/pymox/setup.py +0 -14
- data/vendor/depot_tools/third_party/pymox/stubout.py +0 -142
- data/vendor/depot_tools/third_party/pymox/stubout_test.py +0 -47
- data/vendor/depot_tools/third_party/pymox/stubout_testee.py +0 -2
- data/vendor/depot_tools/third_party/simplejson/LICENSE.txt +0 -19
- data/vendor/depot_tools/third_party/simplejson/PKG-INFO +0 -29
- data/vendor/depot_tools/third_party/simplejson/__init__.py +0 -437
- data/vendor/depot_tools/third_party/simplejson/decoder.py +0 -421
- data/vendor/depot_tools/third_party/simplejson/encoder.py +0 -501
- data/vendor/depot_tools/third_party/simplejson/ordered_dict.py +0 -119
- data/vendor/depot_tools/third_party/simplejson/scanner.py +0 -77
- data/vendor/depot_tools/third_party/simplejson/tool.py +0 -39
- data/vendor/depot_tools/third_party/upload.py +0 -2565
|
@@ -37,7 +37,7 @@ praw() {
|
|
|
37
37
|
pcommand() {
|
|
38
38
|
praw "$(python -c '\
|
|
39
39
|
import sys, pipes; \
|
|
40
|
-
print
|
|
40
|
+
print(" ".join(map(pipes.quote, sys.argv[1:])))' "$@")"
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
# run a visible command
|
|
@@ -71,7 +71,7 @@ add() {
|
|
|
71
71
|
if [[ ! $CONTENT ]]
|
|
72
72
|
then
|
|
73
73
|
CONTENT=$(python -c 'import random, string; \
|
|
74
|
-
print
|
|
74
|
+
print("".join(random.sample(string.lowercase, 16)))')
|
|
75
75
|
fi
|
|
76
76
|
echo "$CONTENT" > $1
|
|
77
77
|
silent git add $1
|
|
@@ -74,13 +74,13 @@ Clone the 'depot_tools' repository:
|
|
|
74
74
|
[white]**$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git**
|
|
75
75
|
----
|
|
76
76
|
|
|
77
|
-
Add 'depot_tools' to the '
|
|
77
|
+
Add 'depot_tools' to the 'front' of your PATH (you will probably want to put this
|
|
78
78
|
in your `~/.bashrc` or `~/.zshrc`). Assuming you cloned 'depot_tools' to
|
|
79
79
|
`/path/to/depot_tools`:
|
|
80
80
|
|
|
81
81
|
[postsubs="quotes"]
|
|
82
82
|
----
|
|
83
|
-
[white]**$ export PATH
|
|
83
|
+
[white]**$ export PATH=/path/to/depot_tools:$PATH**
|
|
84
84
|
----
|
|
85
85
|
|
|
86
86
|
// No need to show the Windows stuff on the manpage output.
|
|
@@ -96,7 +96,7 @@ extract it somewhere.
|
|
|
96
96
|
extract the hidden ``.git'' folder which is necessary for 'depot_tools' to
|
|
97
97
|
autoupdate itself. You can use ``Extract all...'' from the context menu though.
|
|
98
98
|
|
|
99
|
-
Add 'depot_tools' to the '
|
|
99
|
+
Add 'depot_tools' to the 'front' of your PATH (must be ahead of any installs of
|
|
100
100
|
Python). Assuming you unzipped the bundle to `C:\workspace\depot_tools`:
|
|
101
101
|
|
|
102
102
|
With Administrator access: ::
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
# Use of this source code is governed by a BSD-style license that can be
|
|
4
4
|
# found in the LICENSE file.
|
|
5
5
|
|
|
6
|
+
from __future__ import print_function
|
|
7
|
+
|
|
6
8
|
import collections
|
|
7
9
|
import os
|
|
8
10
|
import re
|
|
@@ -13,7 +15,7 @@ from xml.sax.saxutils import escape
|
|
|
13
15
|
from cStringIO import StringIO
|
|
14
16
|
|
|
15
17
|
if not os.path.exists('ansi2html'):
|
|
16
|
-
print
|
|
18
|
+
print('You must run ./make_docs.sh once before running this script.')
|
|
17
19
|
sys.exit(1)
|
|
18
20
|
|
|
19
21
|
# This dependency is pulled in by make_docs.sh
|
|
@@ -66,7 +68,7 @@ def main():
|
|
|
66
68
|
backend = sys.argv[1]
|
|
67
69
|
output = sys.stdin.read().rstrip()
|
|
68
70
|
|
|
69
|
-
callout_re = re.compile('\x1b\[(\d+)c\n')
|
|
71
|
+
callout_re = re.compile(r'\x1b\[(\d+)c\n')
|
|
70
72
|
callouts = collections.defaultdict(int)
|
|
71
73
|
for i, line in enumerate(output.splitlines(True)):
|
|
72
74
|
m = callout_re.match(line)
|
|
@@ -52,7 +52,8 @@ depot-tools.upstream
|
|
|
52
52
|
~~~~~~~~~~~~~~~~~~~~
|
|
53
53
|
|
|
54
54
|
This configures the default 'upstream' for all new branches. If it is unset, it
|
|
55
|
-
defaults to 'origin/master'
|
|
55
|
+
defaults to 'origin''s default branch or 'origin/master' if that can't be found.
|
|
56
|
+
This is considered to be the 'root' branch.
|
|
56
57
|
|
|
57
58
|
EXAMPLE
|
|
58
59
|
-------
|
|
@@ -63,13 +63,17 @@ Restoration::
|
|
|
63
63
|
`git rebase-update` checks out the branch that you started on, and 'thaws' it,
|
|
64
64
|
if necessary (see linkgit:git-thaw[1]). If the branch you started on got
|
|
65
65
|
cleaned up, `git rebase-update` will checkout the 'root' ref (defaults to
|
|
66
|
-
'origin
|
|
66
|
+
'origin''s default branch, as configured by `depot-tools.upstream`, see
|
|
67
67
|
linkgit:git-new-branch[1]).
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
OPTIONS
|
|
71
71
|
-------
|
|
72
72
|
|
|
73
|
+
-k::
|
|
74
|
+
--keep-going::
|
|
75
|
+
Keep processing past failed rebases.
|
|
76
|
+
|
|
73
77
|
-n::
|
|
74
78
|
--no-fetch::
|
|
75
79
|
Skip the `git fetch` phase of rebase-update.
|
|
@@ -78,6 +82,9 @@ OPTIONS
|
|
|
78
82
|
--verbose::
|
|
79
83
|
More text than your terminal can handle.
|
|
80
84
|
|
|
85
|
+
--current::
|
|
86
|
+
Only rebase the current branch.
|
|
87
|
+
|
|
81
88
|
|
|
82
89
|
CONFIGURATION VARIABLES
|
|
83
90
|
-----------------------
|
|
@@ -30,12 +30,12 @@ First, some words about what data we are **NOT** collecting:
|
|
|
30
30
|
- We won't record information about the current directory or environment flags.
|
|
31
31
|
- We won't record arbitrary strings. We only collect a string if it is in the
|
|
32
32
|
list available at
|
|
33
|
-
https://chromium.
|
|
33
|
+
https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/appengine/depot_tools_metrics/metrics/constants.go
|
|
34
34
|
|
|
35
35
|
The metrics we're collecting are:
|
|
36
36
|
|
|
37
|
-
-
|
|
38
|
-
- The age of your depot\_tools checkout
|
|
37
|
+
- The time when the command was run.
|
|
38
|
+
- The age of your depot\_tools checkout.
|
|
39
39
|
- Your version of Python (in the format major.minor.micro).
|
|
40
40
|
- Your version of Git (in the format major.minor.micro).
|
|
41
41
|
- The OS of your machine (i.e. win, linux or mac).
|
|
@@ -47,7 +47,7 @@ The metrics we're collecting are:
|
|
|
47
47
|
- The exit code.
|
|
48
48
|
- The project you're working on. We only record data about projects you can
|
|
49
49
|
fetch using depot\_tools' fetch command (e.g. Chromium, WebRTC, V8, etc)
|
|
50
|
-
- The age of your project checkout
|
|
50
|
+
- The age of your project checkout.
|
|
51
51
|
- What features are you using in your DEPS and .gclient files. For example:
|
|
52
52
|
- Are you setting `use_relative_paths=True`?
|
|
53
53
|
- Are you using `recursedeps`?
|
|
@@ -72,7 +72,10 @@ The metrics we're collecting are:
|
|
|
72
72
|
- What was the exit code?
|
|
73
73
|
|
|
74
74
|
The list of all known strings we collect can be found at
|
|
75
|
-
https://chromium.
|
|
75
|
+
https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/appengine/depot_tools_metrics/metrics/constants.go
|
|
76
|
+
|
|
77
|
+
The schema for the metrics being collected can be found at
|
|
78
|
+
https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/appengine/depot_tools_metrics/schema/schema.proto
|
|
76
79
|
|
|
77
80
|
## Why am I seeing this message *again*?
|
|
78
81
|
|
|
@@ -9,7 +9,6 @@ import contextlib
|
|
|
9
9
|
import functools
|
|
10
10
|
import json
|
|
11
11
|
import os
|
|
12
|
-
import subprocess
|
|
13
12
|
import sys
|
|
14
13
|
import tempfile
|
|
15
14
|
import threading
|
|
@@ -24,6 +23,7 @@ except ImportError: # For Py3 compatibility
|
|
|
24
23
|
import detect_host_arch
|
|
25
24
|
import gclient_utils
|
|
26
25
|
import metrics_utils
|
|
26
|
+
import subprocess2
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
DEPOT_TOOLS = os.path.dirname(os.path.abspath(__file__))
|
|
@@ -184,13 +184,13 @@ class MetricsCollector(object):
|
|
|
184
184
|
# We invoke a subprocess, and use stdin.write instead of communicate(),
|
|
185
185
|
# so that we are able to return immediately, leaving the upload running in
|
|
186
186
|
# the background.
|
|
187
|
-
p =
|
|
188
|
-
p.stdin.write(json.dumps(self._reported_metrics))
|
|
187
|
+
p = subprocess2.Popen(['vpython3', UPLOAD_SCRIPT], stdin=subprocess2.PIPE)
|
|
188
|
+
p.stdin.write(json.dumps(self._reported_metrics).encode('utf-8'))
|
|
189
189
|
|
|
190
190
|
def _collect_metrics(self, func, command_name, *args, **kwargs):
|
|
191
191
|
# If we're already collecting metrics, just execute the function.
|
|
192
192
|
# e.g. git-cl split invokes git-cl upload several times to upload each
|
|
193
|
-
#
|
|
193
|
+
# split CL.
|
|
194
194
|
if self.collecting_metrics:
|
|
195
195
|
# Don't collect metrics for this function.
|
|
196
196
|
# e.g. Don't record the arguments git-cl split passes to git-cl upload.
|
|
@@ -198,6 +198,7 @@ class MetricsCollector(object):
|
|
|
198
198
|
return func(*args, **kwargs)
|
|
199
199
|
|
|
200
200
|
self._collecting_metrics = True
|
|
201
|
+
self.add('metrics_version', metrics_utils.CURRENT_VERSION)
|
|
201
202
|
self.add('command', command_name)
|
|
202
203
|
try:
|
|
203
204
|
start = time.time()
|
|
@@ -213,14 +214,14 @@ class MetricsCollector(object):
|
|
|
213
214
|
self.add('exit_code', exit_code)
|
|
214
215
|
|
|
215
216
|
# Add metrics regarding environment information.
|
|
216
|
-
self.add('timestamp',
|
|
217
|
+
self.add('timestamp', int(time.time()))
|
|
217
218
|
self.add('python_version', metrics_utils.get_python_version())
|
|
218
219
|
self.add('host_os', gclient_utils.GetMacWinOrLinux())
|
|
219
220
|
self.add('host_arch', detect_host_arch.HostArch())
|
|
220
221
|
|
|
221
222
|
depot_tools_age = metrics_utils.get_repo_timestamp(DEPOT_TOOLS)
|
|
222
223
|
if depot_tools_age is not None:
|
|
223
|
-
self.add('depot_tools_age', depot_tools_age)
|
|
224
|
+
self.add('depot_tools_age', int(depot_tools_age))
|
|
224
225
|
|
|
225
226
|
git_version = metrics_utils.get_git_version()
|
|
226
227
|
if git_version:
|
|
@@ -168,7 +168,7 @@ def get_git_version():
|
|
|
168
168
|
['git', '--version'],
|
|
169
169
|
stdout=subprocess2.PIPE, stderr=subprocess2.PIPE)
|
|
170
170
|
stdout, _ = p.communicate()
|
|
171
|
-
match = GIT_VERSION_RE.match(stdout)
|
|
171
|
+
match = GIT_VERSION_RE.match(stdout.decode('utf-8'))
|
|
172
172
|
if not match:
|
|
173
173
|
return None
|
|
174
174
|
return '%s.%s.%s' % match.groups()
|
|
@@ -183,15 +183,6 @@ def return_code_from_exception(exception):
|
|
|
183
183
|
return 1
|
|
184
184
|
|
|
185
185
|
|
|
186
|
-
def seconds_to_weeks(duration):
|
|
187
|
-
"""Transform a |duration| from seconds to weeks approximately.
|
|
188
|
-
|
|
189
|
-
Drops the lowest 19 bits of the integer representation, which ammounts to
|
|
190
|
-
about 6 days.
|
|
191
|
-
"""
|
|
192
|
-
return int(duration) >> 19
|
|
193
|
-
|
|
194
|
-
|
|
195
186
|
def extract_known_subcommand_args(args):
|
|
196
187
|
"""Extract the known arguments from the passed list of args."""
|
|
197
188
|
known_args = []
|
|
@@ -235,7 +226,7 @@ def extract_http_metrics(request_uri, method, status, response_time):
|
|
|
235
226
|
if parsed_url.netloc in KNOWN_HTTP_HOSTS:
|
|
236
227
|
http_metrics['host'] = parsed_url.netloc
|
|
237
228
|
|
|
238
|
-
for name, path_re in KNOWN_HTTP_PATHS.
|
|
229
|
+
for name, path_re in KNOWN_HTTP_PATHS.items():
|
|
239
230
|
if path_re.match(parsed_url.path):
|
|
240
231
|
http_metrics['path'] = name
|
|
241
232
|
break
|
|
@@ -276,8 +267,7 @@ def get_repo_timestamp(path_to_repo):
|
|
|
276
267
|
if p.returncode != 0:
|
|
277
268
|
return None
|
|
278
269
|
|
|
279
|
-
|
|
280
|
-
return seconds_to_weeks(stdout.strip())
|
|
270
|
+
return stdout.strip()
|
|
281
271
|
|
|
282
272
|
def print_boxed_text(out, min_width, lines):
|
|
283
273
|
[EW, NS, SE, SW, NE, NW] = list('=|++++')
|
|
@@ -297,7 +287,7 @@ def print_notice(countdown):
|
|
|
297
287
|
def print_version_change(config_version):
|
|
298
288
|
"""Print a notice to let the user know we are collecting more metrics."""
|
|
299
289
|
lines = list(get_notice_version_change_header())
|
|
300
|
-
for version in
|
|
290
|
+
for version in range(config_version + 1, CURRENT_VERSION + 1):
|
|
301
291
|
lines.append('')
|
|
302
292
|
lines += list(get_change_notice(version))
|
|
303
293
|
print_boxed_text(sys.stderr.write, 49, lines)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#!/usr/bin/env
|
|
1
|
+
#!/usr/bin/env vpython3
|
|
2
2
|
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
|
3
3
|
# Use of this source code is governed by a BSD-style license that can be
|
|
4
4
|
# found in the LICENSE file.
|
|
@@ -9,8 +9,8 @@ Example:
|
|
|
9
9
|
- my_activity.py for stats for the current week (last week on mondays).
|
|
10
10
|
- my_activity.py -Q for stats for last quarter.
|
|
11
11
|
- my_activity.py -Y for stats for this year.
|
|
12
|
-
- my_activity.py -b 4/
|
|
13
|
-
- my_activity.py -b 4/
|
|
12
|
+
- my_activity.py -b 4/24/19 for stats since April 24th 2019.
|
|
13
|
+
- my_activity.py -b 4/24/19 -e 6/16/19 stats between April 24th and June 16th.
|
|
14
14
|
- my_activity.py -jd to output stats for the week to json with deltas data.
|
|
15
15
|
"""
|
|
16
16
|
|
|
@@ -21,22 +21,13 @@ Example:
|
|
|
21
21
|
# check those details to determine if there was activity in the given period.
|
|
22
22
|
# This means that query time scales mostly with (today() - begin).
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
# wheel: <
|
|
26
|
-
# name: "infra/python/wheels/python-dateutil-py2_py3"
|
|
27
|
-
# version: "version:2.7.3"
|
|
28
|
-
# >
|
|
29
|
-
# wheel: <
|
|
30
|
-
# name: "infra/python/wheels/six-py2_py3"
|
|
31
|
-
# version: "version:1.10.0"
|
|
32
|
-
# >
|
|
33
|
-
# [VPYTHON:END]
|
|
24
|
+
from __future__ import print_function
|
|
34
25
|
|
|
35
26
|
import collections
|
|
36
27
|
import contextlib
|
|
37
28
|
from datetime import datetime
|
|
38
29
|
from datetime import timedelta
|
|
39
|
-
|
|
30
|
+
import httplib2
|
|
40
31
|
import itertools
|
|
41
32
|
import json
|
|
42
33
|
import logging
|
|
@@ -51,10 +42,16 @@ import re
|
|
|
51
42
|
|
|
52
43
|
import auth
|
|
53
44
|
import fix_encoding
|
|
45
|
+
import gclient_utils
|
|
54
46
|
import gerrit_util
|
|
55
|
-
import rietveld
|
|
56
47
|
|
|
57
|
-
|
|
48
|
+
|
|
49
|
+
if sys.version_info.major == 2:
|
|
50
|
+
logging.warning(
|
|
51
|
+
'Python 2 is deprecated. Run my_activity.py using vpython3.')
|
|
52
|
+
import urllib as urllib_parse
|
|
53
|
+
else:
|
|
54
|
+
import urllib.parse as urllib_parse
|
|
58
55
|
|
|
59
56
|
try:
|
|
60
57
|
import dateutil # pylint: disable=import-error
|
|
@@ -71,43 +68,18 @@ class DefaultFormatter(Formatter):
|
|
|
71
68
|
self.default = default
|
|
72
69
|
|
|
73
70
|
def get_value(self, key, args, kwds):
|
|
74
|
-
if isinstance(key,
|
|
71
|
+
if isinstance(key, str) and key not in kwds:
|
|
75
72
|
return self.default
|
|
76
73
|
return Formatter.get_value(self, key, args, kwds)
|
|
77
74
|
|
|
78
|
-
|
|
75
|
+
gerrit_instances = [
|
|
79
76
|
{
|
|
80
|
-
'url': '
|
|
81
|
-
'shorturl': '
|
|
82
|
-
'supports_owner_modified_query': True,
|
|
83
|
-
'requires_auth': False,
|
|
84
|
-
'email_domain': 'chromium.org',
|
|
77
|
+
'url': 'android-review.googlesource.com',
|
|
78
|
+
'shorturl': 'r.android.com',
|
|
85
79
|
'short_url_protocol': 'https',
|
|
86
80
|
},
|
|
87
81
|
{
|
|
88
|
-
'url': '
|
|
89
|
-
'shorturl': 'go/chromerev',
|
|
90
|
-
'supports_owner_modified_query': True,
|
|
91
|
-
'requires_auth': True,
|
|
92
|
-
'email_domain': 'google.com',
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
'url': 'codereview.appspot.com',
|
|
96
|
-
'supports_owner_modified_query': True,
|
|
97
|
-
'requires_auth': False,
|
|
98
|
-
'email_domain': 'chromium.org',
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
'url': 'breakpad.appspot.com',
|
|
102
|
-
'supports_owner_modified_query': False,
|
|
103
|
-
'requires_auth': False,
|
|
104
|
-
'email_domain': 'chromium.org',
|
|
105
|
-
},
|
|
106
|
-
]
|
|
107
|
-
|
|
108
|
-
gerrit_instances = [
|
|
109
|
-
{
|
|
110
|
-
'url': 'android-review.googlesource.com',
|
|
82
|
+
'url': 'gerrit-review.googlesource.com',
|
|
111
83
|
},
|
|
112
84
|
{
|
|
113
85
|
'url': 'chrome-internal-review.googlesource.com',
|
|
@@ -119,6 +91,9 @@ gerrit_instances = [
|
|
|
119
91
|
'shorturl': 'crrev.com/c',
|
|
120
92
|
'short_url_protocol': 'https',
|
|
121
93
|
},
|
|
94
|
+
{
|
|
95
|
+
'url': 'dawn-review.googlesource.com',
|
|
96
|
+
},
|
|
122
97
|
{
|
|
123
98
|
'url': 'pdfium-review.googlesource.com',
|
|
124
99
|
},
|
|
@@ -128,17 +103,22 @@ gerrit_instances = [
|
|
|
128
103
|
]
|
|
129
104
|
|
|
130
105
|
monorail_projects = {
|
|
106
|
+
'angleproject': {
|
|
107
|
+
'shorturl': 'anglebug.com',
|
|
108
|
+
'short_url_protocol': 'http',
|
|
109
|
+
},
|
|
131
110
|
'chromium': {
|
|
132
111
|
'shorturl': 'crbug.com',
|
|
133
112
|
'short_url_protocol': 'https',
|
|
134
113
|
},
|
|
114
|
+
'dawn': {},
|
|
135
115
|
'google-breakpad': {},
|
|
136
116
|
'gyp': {},
|
|
137
|
-
'skia': {},
|
|
138
117
|
'pdfium': {
|
|
139
118
|
'shorturl': 'crbug.com/pdfium',
|
|
140
119
|
'short_url_protocol': 'https',
|
|
141
120
|
},
|
|
121
|
+
'skia': {},
|
|
142
122
|
'v8': {
|
|
143
123
|
'shorturl': 'crbug.com/v8',
|
|
144
124
|
'short_url_protocol': 'https',
|
|
@@ -157,7 +137,7 @@ def datetime_to_midnight(date):
|
|
|
157
137
|
|
|
158
138
|
def get_quarter_of(date):
|
|
159
139
|
begin = (datetime_to_midnight(date) -
|
|
160
|
-
relativedelta(months=(date.month
|
|
140
|
+
relativedelta(months=(date.month - 1) % 3, days=(date.day - 1)))
|
|
161
141
|
return begin, begin + relativedelta(months=3)
|
|
162
142
|
|
|
163
143
|
|
|
@@ -174,7 +154,7 @@ def get_week_of(date):
|
|
|
174
154
|
|
|
175
155
|
def get_yes_or_no(msg):
|
|
176
156
|
while True:
|
|
177
|
-
response =
|
|
157
|
+
response = gclient_utils.AskForData(msg + ' yes/no [no] ')
|
|
178
158
|
if response == 'y' or response == 'yes':
|
|
179
159
|
return True
|
|
180
160
|
elif not response or response == 'n' or response == 'no':
|
|
@@ -185,18 +165,27 @@ def datetime_from_gerrit(date_string):
|
|
|
185
165
|
return datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S.%f000')
|
|
186
166
|
|
|
187
167
|
|
|
188
|
-
def datetime_from_rietveld(date_string):
|
|
189
|
-
try:
|
|
190
|
-
return datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S.%f')
|
|
191
|
-
except ValueError:
|
|
192
|
-
# Sometimes rietveld returns a value without the milliseconds part, so we
|
|
193
|
-
# attempt to parse those cases as well.
|
|
194
|
-
return datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S')
|
|
195
|
-
|
|
196
|
-
|
|
197
168
|
def datetime_from_monorail(date_string):
|
|
198
169
|
return datetime.strptime(date_string, '%Y-%m-%dT%H:%M:%S')
|
|
199
170
|
|
|
171
|
+
def extract_bug_numbers_from_description(issue):
|
|
172
|
+
# Getting the description for REST Gerrit
|
|
173
|
+
revision = issue['revisions'][issue['current_revision']]
|
|
174
|
+
description = revision['commit']['message']
|
|
175
|
+
|
|
176
|
+
bugs = []
|
|
177
|
+
# Handle both "Bug: 99999" and "BUG=99999" bug notations
|
|
178
|
+
# Multiple bugs can be noted on a single line or in multiple ones.
|
|
179
|
+
matches = re.findall(
|
|
180
|
+
r'^(BUG=|(Bug|Fixed):\s*)((((?:[a-zA-Z0-9-]+:)?\d+)(,\s?)?)+)',
|
|
181
|
+
description, flags=re.IGNORECASE | re.MULTILINE)
|
|
182
|
+
if matches:
|
|
183
|
+
for match in matches:
|
|
184
|
+
bugs.extend(match[2].replace(' ', '').split(','))
|
|
185
|
+
# Add default chromium: prefix if none specified.
|
|
186
|
+
bugs = [bug if ':' in bug else 'chromium:%s' % bug for bug in bugs]
|
|
187
|
+
|
|
188
|
+
return sorted(set(bugs))
|
|
200
189
|
|
|
201
190
|
class MyActivity(object):
|
|
202
191
|
def __init__(self, options):
|
|
@@ -208,164 +197,15 @@ class MyActivity(object):
|
|
|
208
197
|
self.reviews = []
|
|
209
198
|
self.issues = []
|
|
210
199
|
self.referenced_issues = []
|
|
211
|
-
self.check_cookies()
|
|
212
200
|
self.google_code_auth_token = None
|
|
213
201
|
self.access_errors = set()
|
|
202
|
+
self.skip_servers = (options.skip_servers.split(','))
|
|
214
203
|
|
|
215
204
|
def show_progress(self, how='.'):
|
|
216
205
|
if sys.stdout.isatty():
|
|
217
206
|
sys.stdout.write(how)
|
|
218
207
|
sys.stdout.flush()
|
|
219
208
|
|
|
220
|
-
# Check the codereview cookie jar to determine which Rietveld instances to
|
|
221
|
-
# authenticate to.
|
|
222
|
-
def check_cookies(self):
|
|
223
|
-
filtered_instances = []
|
|
224
|
-
|
|
225
|
-
def has_cookie(instance):
|
|
226
|
-
auth_config = auth.extract_auth_config_from_options(self.options)
|
|
227
|
-
a = auth.get_authenticator_for_host(instance['url'], auth_config)
|
|
228
|
-
return a.has_cached_credentials()
|
|
229
|
-
|
|
230
|
-
for instance in rietveld_instances:
|
|
231
|
-
instance['auth'] = has_cookie(instance)
|
|
232
|
-
|
|
233
|
-
if filtered_instances:
|
|
234
|
-
logging.warning('No cookie found for the following Rietveld instance%s:',
|
|
235
|
-
's' if len(filtered_instances) > 1 else '')
|
|
236
|
-
for instance in filtered_instances:
|
|
237
|
-
logging.warning('\t' + instance['url'])
|
|
238
|
-
logging.warning('Use --auth if you would like to authenticate to them.')
|
|
239
|
-
|
|
240
|
-
def rietveld_search(self, instance, owner=None, reviewer=None):
|
|
241
|
-
if instance['requires_auth'] and not instance['auth']:
|
|
242
|
-
return []
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
email = None if instance['auth'] else ''
|
|
246
|
-
auth_config = auth.extract_auth_config_from_options(self.options)
|
|
247
|
-
remote = rietveld.Rietveld('https://' + instance['url'], auth_config, email)
|
|
248
|
-
|
|
249
|
-
# See def search() in rietveld.py to see all the filters you can use.
|
|
250
|
-
query_modified_after = None
|
|
251
|
-
|
|
252
|
-
if instance['supports_owner_modified_query']:
|
|
253
|
-
query_modified_after = self.modified_after.strftime('%Y-%m-%d')
|
|
254
|
-
|
|
255
|
-
# Rietveld does not allow search by both created_before and modified_after.
|
|
256
|
-
# (And some instances don't allow search by both owner and modified_after)
|
|
257
|
-
owner_email = None
|
|
258
|
-
reviewer_email = None
|
|
259
|
-
if owner:
|
|
260
|
-
owner_email = owner + '@' + instance['email_domain']
|
|
261
|
-
if reviewer:
|
|
262
|
-
reviewer_email = reviewer + '@' + instance['email_domain']
|
|
263
|
-
issues = remote.search(
|
|
264
|
-
owner=owner_email,
|
|
265
|
-
reviewer=reviewer_email,
|
|
266
|
-
modified_after=query_modified_after,
|
|
267
|
-
with_messages=True)
|
|
268
|
-
self.show_progress()
|
|
269
|
-
|
|
270
|
-
issues = filter(
|
|
271
|
-
lambda i: (datetime_from_rietveld(i['created']) < self.modified_before),
|
|
272
|
-
issues)
|
|
273
|
-
issues = filter(
|
|
274
|
-
lambda i: (datetime_from_rietveld(i['modified']) > self.modified_after),
|
|
275
|
-
issues)
|
|
276
|
-
|
|
277
|
-
should_filter_by_user = True
|
|
278
|
-
issues = map(partial(self.process_rietveld_issue, remote, instance), issues)
|
|
279
|
-
issues = filter(
|
|
280
|
-
partial(self.filter_issue, should_filter_by_user=should_filter_by_user),
|
|
281
|
-
issues)
|
|
282
|
-
issues = sorted(issues, key=lambda i: i['modified'], reverse=True)
|
|
283
|
-
|
|
284
|
-
return issues
|
|
285
|
-
|
|
286
|
-
def extract_bug_numbers_from_description(self, issue):
|
|
287
|
-
description = None
|
|
288
|
-
|
|
289
|
-
if 'description' in issue:
|
|
290
|
-
# Getting the description for Rietveld
|
|
291
|
-
description = issue['description']
|
|
292
|
-
elif 'revisions' in issue:
|
|
293
|
-
# Getting the description for REST Gerrit
|
|
294
|
-
revision = issue['revisions'][issue['current_revision']]
|
|
295
|
-
description = revision['commit']['message']
|
|
296
|
-
|
|
297
|
-
bugs = []
|
|
298
|
-
if description:
|
|
299
|
-
# Handle both "Bug: 99999" and "BUG=99999" bug notations
|
|
300
|
-
# Multiple bugs can be noted on a single line or in multiple ones.
|
|
301
|
-
matches = re.findall(
|
|
302
|
-
r'BUG[=:]\s?((((?:[a-zA-Z0-9-]+:)?\d+)(,\s?)?)+)', description,
|
|
303
|
-
flags=re.IGNORECASE)
|
|
304
|
-
if matches:
|
|
305
|
-
for match in matches:
|
|
306
|
-
bugs.extend(match[0].replace(' ', '').split(','))
|
|
307
|
-
# Add default chromium: prefix if none specified.
|
|
308
|
-
bugs = [bug if ':' in bug else 'chromium:%s' % bug for bug in bugs]
|
|
309
|
-
|
|
310
|
-
return sorted(set(bugs))
|
|
311
|
-
|
|
312
|
-
def process_rietveld_issue(self, remote, instance, issue):
|
|
313
|
-
ret = {}
|
|
314
|
-
if self.options.deltas:
|
|
315
|
-
patchset_props = remote.get_patchset_properties(
|
|
316
|
-
issue['issue'],
|
|
317
|
-
issue['patchsets'][-1])
|
|
318
|
-
self.show_progress()
|
|
319
|
-
ret['delta'] = '+%d,-%d' % (
|
|
320
|
-
sum(f['num_added'] for f in patchset_props['files'].itervalues()),
|
|
321
|
-
sum(f['num_removed'] for f in patchset_props['files'].itervalues()))
|
|
322
|
-
|
|
323
|
-
if issue['landed_days_ago'] != 'unknown':
|
|
324
|
-
ret['status'] = 'committed'
|
|
325
|
-
elif issue['closed']:
|
|
326
|
-
ret['status'] = 'closed'
|
|
327
|
-
elif len(issue['reviewers']) and issue['all_required_reviewers_approved']:
|
|
328
|
-
ret['status'] = 'ready'
|
|
329
|
-
else:
|
|
330
|
-
ret['status'] = 'open'
|
|
331
|
-
|
|
332
|
-
ret['owner'] = issue['owner_email']
|
|
333
|
-
ret['author'] = ret['owner']
|
|
334
|
-
|
|
335
|
-
ret['reviewers'] = set(issue['reviewers'])
|
|
336
|
-
|
|
337
|
-
if 'shorturl' in instance:
|
|
338
|
-
url = instance['shorturl']
|
|
339
|
-
protocol = instance.get('short_url_protocol', 'http')
|
|
340
|
-
else:
|
|
341
|
-
url = instance['url']
|
|
342
|
-
protocol = 'https'
|
|
343
|
-
|
|
344
|
-
ret['review_url'] = '%s://%s/%d' % (protocol, url, issue['issue'])
|
|
345
|
-
|
|
346
|
-
# Rietveld sometimes has '\r\n' instead of '\n'.
|
|
347
|
-
ret['header'] = issue['description'].replace('\r', '').split('\n')[0]
|
|
348
|
-
|
|
349
|
-
ret['modified'] = datetime_from_rietveld(issue['modified'])
|
|
350
|
-
ret['created'] = datetime_from_rietveld(issue['created'])
|
|
351
|
-
ret['replies'] = self.process_rietveld_replies(issue['messages'])
|
|
352
|
-
|
|
353
|
-
ret['bugs'] = self.extract_bug_numbers_from_description(issue)
|
|
354
|
-
ret['landed_days_ago'] = issue['landed_days_ago']
|
|
355
|
-
|
|
356
|
-
return ret
|
|
357
|
-
|
|
358
|
-
@staticmethod
|
|
359
|
-
def process_rietveld_replies(replies):
|
|
360
|
-
ret = []
|
|
361
|
-
for reply in replies:
|
|
362
|
-
r = {}
|
|
363
|
-
r['author'] = reply['sender']
|
|
364
|
-
r['created'] = datetime_from_rietveld(reply['date'])
|
|
365
|
-
r['content'] = ''
|
|
366
|
-
ret.append(r)
|
|
367
|
-
return ret
|
|
368
|
-
|
|
369
209
|
def gerrit_changes_over_rest(self, instance, filters):
|
|
370
210
|
# Convert the "key:value" filter to a list of (key, value) pairs.
|
|
371
211
|
req = list(f.split(':', 1) for f in filters)
|
|
@@ -375,13 +215,15 @@ class MyActivity(object):
|
|
|
375
215
|
return list(gerrit_util.GenerateAllChanges(instance['url'], req,
|
|
376
216
|
o_params=['MESSAGES', 'LABELS', 'DETAILED_ACCOUNTS',
|
|
377
217
|
'CURRENT_REVISION', 'CURRENT_COMMIT']))
|
|
378
|
-
except gerrit_util.GerritError
|
|
218
|
+
except gerrit_util.GerritError as e:
|
|
379
219
|
error_message = 'Looking up %r: %s' % (instance['url'], e)
|
|
380
220
|
if error_message not in self.access_errors:
|
|
381
221
|
self.access_errors.add(error_message)
|
|
382
222
|
return []
|
|
383
223
|
|
|
384
224
|
def gerrit_search(self, instance, owner=None, reviewer=None):
|
|
225
|
+
if instance['url'] in self.skip_servers:
|
|
226
|
+
return []
|
|
385
227
|
max_age = datetime.today() - self.modified_after
|
|
386
228
|
filters = ['-age:%ss' % (max_age.days * 24 * 3600 + max_age.seconds)]
|
|
387
229
|
if owner:
|
|
@@ -430,7 +272,7 @@ class MyActivity(object):
|
|
|
430
272
|
ret['replies'] = []
|
|
431
273
|
ret['reviewers'] = set(r['author'] for r in ret['replies'])
|
|
432
274
|
ret['reviewers'].discard(ret['author'])
|
|
433
|
-
ret['bugs'] =
|
|
275
|
+
ret['bugs'] = extract_bug_numbers_from_description(issue)
|
|
434
276
|
return ret
|
|
435
277
|
|
|
436
278
|
@staticmethod
|
|
@@ -447,13 +289,10 @@ class MyActivity(object):
|
|
|
447
289
|
return ret
|
|
448
290
|
|
|
449
291
|
def monorail_get_auth_http(self):
|
|
450
|
-
auth_config = auth.extract_auth_config_from_options(self.options)
|
|
451
|
-
authenticator = auth.get_authenticator_for_host(
|
|
452
|
-
'bugs.chromium.org', auth_config)
|
|
453
292
|
# Manually use a long timeout (10m); for some users who have a
|
|
454
293
|
# long history on the issue tracker, whatever the default timeout
|
|
455
294
|
# is is reached.
|
|
456
|
-
return
|
|
295
|
+
return auth.Authenticator().authorize(httplib2.Http(timeout=600))
|
|
457
296
|
|
|
458
297
|
def filter_modified_monorail_issue(self, issue):
|
|
459
298
|
"""Precisely checks if an issue has been modified in the time range.
|
|
@@ -493,7 +332,7 @@ class MyActivity(object):
|
|
|
493
332
|
http = self.monorail_get_auth_http()
|
|
494
333
|
url = ('https://monorail-prod.appspot.com/_ah/api/monorail/v1/projects'
|
|
495
334
|
'/%s/issues') % project
|
|
496
|
-
query_data =
|
|
335
|
+
query_data = urllib_parse.urlencode(query)
|
|
497
336
|
url = url + '?' + query_data
|
|
498
337
|
_, body = http.request(url)
|
|
499
338
|
self.show_progress()
|
|
@@ -538,8 +377,9 @@ class MyActivity(object):
|
|
|
538
377
|
|
|
539
378
|
def monorail_issue_search(self, project):
|
|
540
379
|
epoch = datetime.utcfromtimestamp(0)
|
|
541
|
-
#
|
|
542
|
-
user_str = '
|
|
380
|
+
# Defaults to @chromium.org email if one wasn't provided on -u option.
|
|
381
|
+
user_str = (self.options.email if self.options.email.find('@') >= 0
|
|
382
|
+
else '%s@chromium.org' % self.user)
|
|
543
383
|
|
|
544
384
|
issues = self.monorail_query_issues(project, {
|
|
545
385
|
'maxResults': 10000,
|
|
@@ -566,8 +406,8 @@ class MyActivity(object):
|
|
|
566
406
|
})
|
|
567
407
|
|
|
568
408
|
def print_heading(self, heading):
|
|
569
|
-
print
|
|
570
|
-
print
|
|
409
|
+
print()
|
|
410
|
+
print(self.options.output_format_heading.format(heading=heading))
|
|
571
411
|
|
|
572
412
|
def match(self, author):
|
|
573
413
|
if '@' in self.user:
|
|
@@ -644,7 +484,6 @@ class MyActivity(object):
|
|
|
644
484
|
title, url, author, created, modified,
|
|
645
485
|
optional_values=None):
|
|
646
486
|
output_format = specific_fmt if specific_fmt is not None else default_fmt
|
|
647
|
-
output_format = unicode(output_format)
|
|
648
487
|
values = {
|
|
649
488
|
'title': title,
|
|
650
489
|
'url': url,
|
|
@@ -654,8 +493,7 @@ class MyActivity(object):
|
|
|
654
493
|
}
|
|
655
494
|
if optional_values is not None:
|
|
656
495
|
values.update(optional_values)
|
|
657
|
-
print
|
|
658
|
-
sys.getdefaultencoding())
|
|
496
|
+
print(DefaultFormatter().format(output_format, **values))
|
|
659
497
|
|
|
660
498
|
|
|
661
499
|
def filter_issue(self, issue, should_filter_by_user=True):
|
|
@@ -692,17 +530,13 @@ class MyActivity(object):
|
|
|
692
530
|
pass
|
|
693
531
|
|
|
694
532
|
def get_changes(self):
|
|
695
|
-
num_instances = len(
|
|
533
|
+
num_instances = len(gerrit_instances)
|
|
696
534
|
with contextlib.closing(ThreadPool(num_instances)) as pool:
|
|
697
|
-
rietveld_changes = pool.map_async(
|
|
698
|
-
lambda instance: self.rietveld_search(instance, owner=self.user),
|
|
699
|
-
rietveld_instances)
|
|
700
535
|
gerrit_changes = pool.map_async(
|
|
701
536
|
lambda instance: self.gerrit_search(instance, owner=self.user),
|
|
702
537
|
gerrit_instances)
|
|
703
|
-
rietveld_changes = itertools.chain.from_iterable(rietveld_changes.get())
|
|
704
538
|
gerrit_changes = itertools.chain.from_iterable(gerrit_changes.get())
|
|
705
|
-
self.changes = list(
|
|
539
|
+
self.changes = list(gerrit_changes)
|
|
706
540
|
|
|
707
541
|
def print_changes(self):
|
|
708
542
|
if self.changes:
|
|
@@ -717,17 +551,13 @@ class MyActivity(object):
|
|
|
717
551
|
logging.error(error.rstrip())
|
|
718
552
|
|
|
719
553
|
def get_reviews(self):
|
|
720
|
-
num_instances = len(
|
|
554
|
+
num_instances = len(gerrit_instances)
|
|
721
555
|
with contextlib.closing(ThreadPool(num_instances)) as pool:
|
|
722
|
-
rietveld_reviews = pool.map_async(
|
|
723
|
-
lambda instance: self.rietveld_search(instance, reviewer=self.user),
|
|
724
|
-
rietveld_instances)
|
|
725
556
|
gerrit_reviews = pool.map_async(
|
|
726
557
|
lambda instance: self.gerrit_search(instance, reviewer=self.user),
|
|
727
558
|
gerrit_instances)
|
|
728
|
-
rietveld_reviews = itertools.chain.from_iterable(rietveld_reviews.get())
|
|
729
559
|
gerrit_reviews = itertools.chain.from_iterable(gerrit_reviews.get())
|
|
730
|
-
self.reviews = list(
|
|
560
|
+
self.reviews = list(gerrit_reviews)
|
|
731
561
|
|
|
732
562
|
def print_reviews(self):
|
|
733
563
|
if self.reviews:
|
|
@@ -766,7 +596,7 @@ class MyActivity(object):
|
|
|
766
596
|
project, issue_id = issue_uid.split(':')
|
|
767
597
|
missing_issues_by_project[project].append(issue_id)
|
|
768
598
|
|
|
769
|
-
for project, issue_ids in missing_issues_by_project.
|
|
599
|
+
for project, issue_ids in missing_issues_by_project.items():
|
|
770
600
|
self.referenced_issues += self.monorail_get_issues(project, issue_ids)
|
|
771
601
|
|
|
772
602
|
def print_issues(self):
|
|
@@ -802,25 +632,25 @@ class MyActivity(object):
|
|
|
802
632
|
if changes_by_issue_uid[issue_uid] or not skip_empty_own:
|
|
803
633
|
self.print_issue(issues[issue_uid])
|
|
804
634
|
if changes_by_issue_uid[issue_uid]:
|
|
805
|
-
print
|
|
635
|
+
print()
|
|
806
636
|
for change in changes_by_issue_uid[issue_uid]:
|
|
807
|
-
print '
|
|
637
|
+
print(' ', end='') # this prints no newline
|
|
808
638
|
self.print_change(change)
|
|
809
|
-
print
|
|
639
|
+
print()
|
|
810
640
|
|
|
811
641
|
# Changes referencing others' issues.
|
|
812
642
|
for issue_uid in ref_issues:
|
|
813
643
|
assert changes_by_ref_issue_uid[issue_uid]
|
|
814
644
|
self.print_issue(ref_issues[issue_uid])
|
|
815
645
|
for change in changes_by_ref_issue_uid[issue_uid]:
|
|
816
|
-
print ''
|
|
646
|
+
print('', end=' ') # this prints one space due to comma, but no newline
|
|
817
647
|
self.print_change(change)
|
|
818
648
|
|
|
819
649
|
# Changes referencing no issues.
|
|
820
650
|
if changes_without_issue:
|
|
821
|
-
print
|
|
651
|
+
print(self.options.output_format_no_url.format(title='Other changes'))
|
|
822
652
|
for change in changes_without_issue:
|
|
823
|
-
print ''
|
|
653
|
+
print('', end=' ') # this prints one space due to comma, but no newline
|
|
824
654
|
self.print_change(change)
|
|
825
655
|
|
|
826
656
|
def print_activity(self):
|
|
@@ -839,7 +669,7 @@ class MyActivity(object):
|
|
|
839
669
|
if not url:
|
|
840
670
|
raise Exception('Dumped item %s does not specify url' % item)
|
|
841
671
|
output[url] = dict(
|
|
842
|
-
(k, v) for k,v in item.
|
|
672
|
+
(k, v) for k,v in item.items() if k not in ignore_keys)
|
|
843
673
|
return output
|
|
844
674
|
|
|
845
675
|
class PythonObjectEncoder(json.JSONEncoder):
|
|
@@ -855,13 +685,10 @@ class MyActivity(object):
|
|
|
855
685
|
'changes': format_for_json_dump(self.changes),
|
|
856
686
|
'issues': format_for_json_dump(self.issues)
|
|
857
687
|
}
|
|
858
|
-
print
|
|
688
|
+
print(json.dumps(output, indent=2, cls=PythonObjectEncoder))
|
|
859
689
|
|
|
860
690
|
|
|
861
691
|
def main():
|
|
862
|
-
# Silence upload.py.
|
|
863
|
-
rietveld.upload.verbosity = 0
|
|
864
|
-
|
|
865
692
|
parser = optparse.OptionParser(description=sys.modules[__name__].__doc__)
|
|
866
693
|
parser.add_option(
|
|
867
694
|
'-u', '--user', metavar='<email>',
|
|
@@ -903,6 +730,11 @@ def main():
|
|
|
903
730
|
help='Do not fetch issues referenced by owned changes. Useful in '
|
|
904
731
|
'combination with --changes-by-issue when you only want to list '
|
|
905
732
|
'issues that have also been modified in the same time period.')
|
|
733
|
+
parser.add_option(
|
|
734
|
+
'--skip_servers',
|
|
735
|
+
action='store',
|
|
736
|
+
default='',
|
|
737
|
+
help='A comma separated list of gerrit and rietveld servers to ignore')
|
|
906
738
|
parser.add_option(
|
|
907
739
|
'--skip-own-issues-without-changes',
|
|
908
740
|
action='store_true',
|
|
@@ -963,7 +795,8 @@ def main():
|
|
|
963
795
|
output_format_group.add_option(
|
|
964
796
|
'--output-format-heading', metavar='<format>',
|
|
965
797
|
default=u'{heading}:',
|
|
966
|
-
help='Specifies the format to use when printing headings.'
|
|
798
|
+
help='Specifies the format to use when printing headings. '
|
|
799
|
+
'Supports the variable {heading}.')
|
|
967
800
|
output_format_group.add_option(
|
|
968
801
|
'--output-format-no-url', default='{title}',
|
|
969
802
|
help='Specifies the format to use when printing activity without url.')
|
|
@@ -975,7 +808,6 @@ def main():
|
|
|
975
808
|
'-j', '--json', action='store_true',
|
|
976
809
|
help='Output json data (overrides other format options)')
|
|
977
810
|
parser.add_option_group(output_format_group)
|
|
978
|
-
auth.add_auth_options(parser)
|
|
979
811
|
|
|
980
812
|
parser.add_option(
|
|
981
813
|
'-v', '--verbose',
|
|
@@ -1019,7 +851,9 @@ def main():
|
|
|
1019
851
|
parser.error('Args unsupported')
|
|
1020
852
|
if not options.user:
|
|
1021
853
|
parser.error('USER/USERNAME is not set, please use -u')
|
|
1022
|
-
|
|
854
|
+
# Retains the original -u option as the email address.
|
|
855
|
+
options.email = options.user
|
|
856
|
+
options.user = username(options.email)
|
|
1023
857
|
|
|
1024
858
|
logging.basicConfig(level=options.verbosity)
|
|
1025
859
|
|
|
@@ -1089,8 +923,8 @@ def main():
|
|
|
1089
923
|
my_activity.get_issues()
|
|
1090
924
|
if not options.no_referenced_issues:
|
|
1091
925
|
my_activity.get_referenced_issues()
|
|
1092
|
-
except auth.
|
|
1093
|
-
logging.error('auth.
|
|
926
|
+
except auth.LoginRequiredError as e:
|
|
927
|
+
logging.error('auth.LoginRequiredError: %s', e)
|
|
1094
928
|
|
|
1095
929
|
my_activity.show_progress('\n')
|
|
1096
930
|
|