libv8 7.3.492.27.0 → 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.
Files changed (718) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +11 -14
  4. data/CHANGELOG.md +10 -0
  5. data/README.md +10 -11
  6. data/Rakefile +30 -36
  7. data/ext/libv8/builder.rb +1 -1
  8. data/lib/libv8/version.rb +1 -1
  9. data/libv8.gemspec +1 -3
  10. data/vendor/depot_tools/{cipd.ps1 → .cipd_impl.ps1} +0 -0
  11. data/vendor/depot_tools/.gitattributes +1 -1
  12. data/vendor/depot_tools/.gitignore +7 -2
  13. data/vendor/depot_tools/.style.yapf +3 -1
  14. data/vendor/depot_tools/.vpython +55 -0
  15. data/vendor/depot_tools/.vpython3 +23 -0
  16. data/vendor/depot_tools/CROS_OWNERS +3 -1
  17. data/vendor/depot_tools/GOMA_OWNERS +9 -0
  18. data/vendor/depot_tools/LUCI_OWNERS +5 -0
  19. data/vendor/depot_tools/OWNERS +21 -6
  20. data/vendor/depot_tools/PRESUBMIT.py +35 -18
  21. data/vendor/depot_tools/README.git-cl.md +0 -14
  22. data/vendor/depot_tools/README.md +1 -1
  23. data/vendor/depot_tools/WATCHLISTS +2 -2
  24. data/vendor/depot_tools/auth.py +60 -772
  25. data/vendor/depot_tools/autoninja +12 -6
  26. data/vendor/depot_tools/autoninja.bat +14 -6
  27. data/vendor/depot_tools/autoninja.py +64 -27
  28. data/vendor/depot_tools/bb +1 -1
  29. data/vendor/depot_tools/bootstrap/{win/README.md → README.md} +28 -14
  30. data/vendor/depot_tools/bootstrap/{win/win_tools.py → bootstrap.py} +60 -43
  31. data/vendor/depot_tools/bootstrap/{win/git-bash.template.sh → git-bash.template.sh} +1 -1
  32. data/vendor/depot_tools/bootstrap/{win/git.template.bat → git.template.bat} +0 -0
  33. data/vendor/depot_tools/bootstrap/manifest.txt +27 -0
  34. data/vendor/depot_tools/bootstrap/manifest_bleeding_edge.txt +27 -0
  35. data/vendor/depot_tools/bootstrap/{win/profile.d.python.sh → profile.d.python.sh} +0 -0
  36. data/vendor/depot_tools/bootstrap/{win/python27.bleeding_edge.bat → python27.bat} +0 -0
  37. data/vendor/depot_tools/bootstrap/{win/python27.new.bat → python3.bat} +3 -3
  38. data/vendor/depot_tools/bootstrap/{win/win_tools.bat → win_tools.bat} +21 -16
  39. data/vendor/depot_tools/bootstrap_python3 +35 -0
  40. data/vendor/depot_tools/cbuildbot +1 -1
  41. data/vendor/depot_tools/chrome_set_ver +1 -1
  42. data/vendor/depot_tools/cipd +43 -39
  43. data/vendor/depot_tools/cipd.bat +2 -2
  44. data/vendor/depot_tools/cipd_client_version +1 -1
  45. data/vendor/depot_tools/cipd_client_version.digests +15 -14
  46. data/vendor/depot_tools/cipd_manifest.txt +31 -8
  47. data/vendor/depot_tools/cipd_manifest.versions +278 -158
  48. data/vendor/depot_tools/cit.py +9 -7
  49. data/vendor/depot_tools/clang_format.py +4 -1
  50. data/vendor/depot_tools/clang_format_merge_driver.py +10 -8
  51. data/vendor/depot_tools/compile_single_file.py +7 -2
  52. data/vendor/depot_tools/cpplint.py +51 -45
  53. data/vendor/depot_tools/cros +87 -0
  54. data/vendor/depot_tools/cros_sdk +1 -1
  55. data/vendor/depot_tools/crosjobs +13 -0
  56. data/vendor/depot_tools/detect_host_arch.py +0 -1
  57. data/vendor/depot_tools/dirmd +12 -0
  58. data/vendor/depot_tools/dirmd.bat +7 -0
  59. data/vendor/depot_tools/download_from_google_storage.py +47 -27
  60. data/vendor/depot_tools/ensure_bootstrap +14 -0
  61. data/vendor/depot_tools/fetch +14 -1
  62. data/vendor/depot_tools/fetch.bat +14 -1
  63. data/vendor/depot_tools/fetch.py +5 -7
  64. data/vendor/depot_tools/fetch_configs/chromium.py +6 -4
  65. data/vendor/depot_tools/fetch_configs/devtools-frontend.py +44 -0
  66. data/vendor/depot_tools/fetch_configs/ios_internal.py +10 -19
  67. data/vendor/depot_tools/fix_encoding.py +19 -5
  68. data/vendor/depot_tools/gclient +28 -12
  69. data/vendor/depot_tools/gclient-new-workdir.py +2 -0
  70. data/vendor/depot_tools/gclient.bat +18 -1
  71. data/vendor/depot_tools/gclient.py +160 -119
  72. data/vendor/depot_tools/gclient_eval.py +119 -107
  73. data/vendor/depot_tools/gclient_paths.py +67 -57
  74. data/vendor/depot_tools/gclient_scm.py +181 -159
  75. data/vendor/depot_tools/gclient_utils.py +177 -124
  76. data/vendor/depot_tools/gerrit_client.py +21 -13
  77. data/vendor/depot_tools/gerrit_util.py +188 -228
  78. data/vendor/depot_tools/git-cache +1 -1
  79. data/vendor/depot_tools/git-cl +1 -1
  80. data/vendor/depot_tools/git-drover +1 -1
  81. data/vendor/depot_tools/git-find-releases +1 -1
  82. data/vendor/depot_tools/git-footers +1 -1
  83. data/vendor/depot_tools/git-freeze +1 -1
  84. data/vendor/depot_tools/git-hyper-blame +1 -1
  85. data/vendor/depot_tools/git-map +1 -1
  86. data/vendor/depot_tools/git-map-branches +1 -1
  87. data/vendor/depot_tools/git-mark-merge-base +1 -1
  88. data/vendor/depot_tools/git-nav-downstream +1 -1
  89. data/vendor/depot_tools/git-new-branch +1 -1
  90. data/vendor/depot_tools/git-number +1 -1
  91. data/vendor/depot_tools/git-rebase-update +1 -1
  92. data/vendor/depot_tools/git-rename-branch +1 -1
  93. data/vendor/depot_tools/git-reparent-branch +1 -1
  94. data/vendor/depot_tools/git-retry +1 -1
  95. data/vendor/depot_tools/git-squash-branch +1 -1
  96. data/vendor/depot_tools/git-thaw +1 -1
  97. data/vendor/depot_tools/git-upstream-diff +1 -1
  98. data/vendor/depot_tools/git_cache.py +255 -360
  99. data/vendor/depot_tools/git_cl.py +1562 -2059
  100. data/vendor/depot_tools/git_cl_completion.sh +16 -2
  101. data/vendor/depot_tools/git_common.py +77 -32
  102. data/vendor/depot_tools/git_drover.py +17 -8
  103. data/vendor/depot_tools/git_find_releases.py +11 -9
  104. data/vendor/depot_tools/git_footers.py +13 -9
  105. data/vendor/depot_tools/git_freezer.py +3 -1
  106. data/vendor/depot_tools/git_hyper_blame.py +25 -32
  107. data/vendor/depot_tools/git_map.py +115 -93
  108. data/vendor/depot_tools/git_map_branches.py +11 -10
  109. data/vendor/depot_tools/git_mark_merge_base.py +8 -6
  110. data/vendor/depot_tools/git_nav_downstream.py +9 -6
  111. data/vendor/depot_tools/git_new_branch.py +39 -33
  112. data/vendor/depot_tools/git_number.py +28 -17
  113. data/vendor/depot_tools/git_rebase_update.py +50 -49
  114. data/vendor/depot_tools/git_rename_branch.py +2 -2
  115. data/vendor/depot_tools/git_reparent_branch.py +8 -6
  116. data/vendor/depot_tools/git_upstream_diff.py +4 -2
  117. data/vendor/depot_tools/gn.py +6 -4
  118. data/vendor/depot_tools/goma_auth +12 -0
  119. data/vendor/depot_tools/goma_auth.bat +8 -0
  120. data/vendor/depot_tools/goma_ctl +12 -0
  121. data/vendor/depot_tools/goma_ctl.bat +8 -0
  122. data/vendor/depot_tools/gsutil.py +5 -2
  123. data/vendor/depot_tools/gsutil.py.bat +8 -0
  124. data/vendor/depot_tools/gsutil.vpython +3 -1
  125. data/vendor/depot_tools/infra/config/OWNERS +2 -2
  126. data/vendor/depot_tools/infra/config/recipes.cfg +3 -2
  127. data/vendor/depot_tools/led +1 -1
  128. data/vendor/depot_tools/lockfile.py +116 -0
  129. data/vendor/depot_tools/luci-auth +1 -1
  130. data/vendor/depot_tools/lucicfg +1 -1
  131. data/vendor/depot_tools/mac_toolchain +1 -1
  132. data/vendor/depot_tools/man/html/depot_tools.html +1 -1
  133. data/vendor/depot_tools/man/html/depot_tools_tutorial.html +31 -25
  134. data/vendor/depot_tools/man/html/git-cl.html +1 -1
  135. data/vendor/depot_tools/man/html/git-drover.html +18 -18
  136. data/vendor/depot_tools/man/html/git-footers.html +1 -1
  137. data/vendor/depot_tools/man/html/git-freeze.html +3 -3
  138. data/vendor/depot_tools/man/html/git-hyper-blame.html +1 -1
  139. data/vendor/depot_tools/man/html/git-map-branches.html +2 -2
  140. data/vendor/depot_tools/man/html/git-map.html +1 -1
  141. data/vendor/depot_tools/man/html/git-mark-merge-base.html +1 -1
  142. data/vendor/depot_tools/man/html/git-nav-downstream.html +3 -3
  143. data/vendor/depot_tools/man/html/git-nav-upstream.html +12 -6
  144. data/vendor/depot_tools/man/html/git-new-branch.html +1 -1
  145. data/vendor/depot_tools/man/html/git-rebase-update.html +20 -1
  146. data/vendor/depot_tools/man/html/git-rename-branch.html +1 -1
  147. data/vendor/depot_tools/man/html/git-reparent-branch.html +1 -1
  148. data/vendor/depot_tools/man/html/git-retry.html +1 -1
  149. data/vendor/depot_tools/man/html/git-squash-branch.html +1 -1
  150. data/vendor/depot_tools/man/html/git-thaw.html +1 -1
  151. data/vendor/depot_tools/man/html/git-upstream-diff.html +10 -6
  152. data/vendor/depot_tools/man/man1/git-cl.1 +4 -4
  153. data/vendor/depot_tools/man/man1/git-drover.1 +21 -21
  154. data/vendor/depot_tools/man/man1/git-footers.1 +4 -4
  155. data/vendor/depot_tools/man/man1/git-freeze.1 +6 -6
  156. data/vendor/depot_tools/man/man1/git-hyper-blame.1 +4 -4
  157. data/vendor/depot_tools/man/man1/git-map-branches.1 +4 -4
  158. data/vendor/depot_tools/man/man1/git-map.1 +4 -4
  159. data/vendor/depot_tools/man/man1/git-mark-merge-base.1 +4 -4
  160. data/vendor/depot_tools/man/man1/git-nav-downstream.1 +6 -6
  161. data/vendor/depot_tools/man/man1/git-nav-upstream.1 +15 -9
  162. data/vendor/depot_tools/man/man1/git-new-branch.1 +3 -3
  163. data/vendor/depot_tools/man/man1/git-rebase-update.1 +14 -4
  164. data/vendor/depot_tools/man/man1/git-rename-branch.1 +4 -4
  165. data/vendor/depot_tools/man/man1/git-reparent-branch.1 +4 -4
  166. data/vendor/depot_tools/man/man1/git-retry.1 +4 -4
  167. data/vendor/depot_tools/man/man1/git-squash-branch.1 +4 -4
  168. data/vendor/depot_tools/man/man1/git-thaw.1 +4 -4
  169. data/vendor/depot_tools/man/man1/git-upstream-diff.1 +7 -13
  170. data/vendor/depot_tools/man/man7/depot_tools.7 +4 -4
  171. data/vendor/depot_tools/man/man7/depot_tools_tutorial.7 +31 -25
  172. data/vendor/depot_tools/man/src/common_demo_functions.sh +2 -2
  173. data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +3 -3
  174. data/vendor/depot_tools/man/src/filter_demo_output.py +4 -2
  175. data/vendor/depot_tools/man/src/git-new-branch.txt +2 -1
  176. data/vendor/depot_tools/man/src/git-rebase-update.txt +8 -1
  177. data/vendor/depot_tools/metrics.README.md +8 -5
  178. data/vendor/depot_tools/metrics.py +7 -6
  179. data/vendor/depot_tools/metrics_utils.py +4 -14
  180. data/vendor/depot_tools/my_activity.py +85 -251
  181. data/vendor/depot_tools/ninja +1 -0
  182. data/vendor/depot_tools/ninja-mac +0 -0
  183. data/vendor/depot_tools/ninjalog_uploader.py +146 -145
  184. data/vendor/depot_tools/ninjalog_uploader_wrapper.py +69 -60
  185. data/vendor/depot_tools/owners.py +156 -43
  186. data/vendor/depot_tools/owners_finder.py +28 -14
  187. data/vendor/depot_tools/post_build_ninja_summary.py +76 -48
  188. data/vendor/depot_tools/presubmit_canned_checks.py +293 -106
  189. data/vendor/depot_tools/presubmit_support.py +527 -333
  190. data/vendor/depot_tools/prpc +1 -1
  191. data/vendor/depot_tools/pylint +2 -12
  192. data/vendor/depot_tools/pylint-1.5 +78 -0
  193. data/vendor/depot_tools/pylint-1.6 +78 -0
  194. data/vendor/depot_tools/pylint-1.7 +78 -0
  195. data/vendor/depot_tools/pylint-1.8 +78 -0
  196. data/vendor/depot_tools/pylint-1.9 +78 -0
  197. data/vendor/depot_tools/{depot-tools-auth.bat → pylint.bat} +2 -2
  198. data/vendor/depot_tools/pylint_main.py +45 -0
  199. data/vendor/depot_tools/pylintrc +14 -1
  200. data/vendor/depot_tools/python-bin/python3 +7 -0
  201. data/vendor/depot_tools/python_runner.sh +13 -8
  202. data/vendor/depot_tools/rdb +12 -0
  203. data/vendor/depot_tools/rdb.bat +7 -0
  204. data/vendor/depot_tools/recipes/OWNERS +0 -1
  205. data/vendor/depot_tools/recipes/README.recipes.md +218 -151
  206. data/vendor/depot_tools/recipes/recipe_modules/OWNERS +1 -1
  207. data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +17 -16
  208. data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +127 -78
  209. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +19 -4
  210. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +18 -3
  211. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +19 -4
  212. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +29 -8
  213. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +28 -10
  214. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +29 -8
  215. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +29 -8
  216. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/input_commit_with_id_without_repo.json +29 -8
  217. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/multiple_patch_refs.json +29 -8
  218. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +35 -10
  219. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{with_manifest_name.json → no_cp_checkout_HEAD.json} +25 -15
  220. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_branch_head.json +65 -0
  221. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_specific_commit.json +65 -0
  222. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_master.json +65 -0
  223. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/refs.json +29 -8
  224. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +29 -8
  225. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/resolve_chromium_fixed_version.json +117 -0
  226. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +17 -11
  227. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +41 -10
  228. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +24 -11
  229. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +35 -10
  230. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +35 -10
  231. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +38 -11
  232. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +36 -11
  233. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +35 -10
  234. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +35 -10
  235. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +35 -10
  236. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +0 -5
  237. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +29 -8
  238. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +95 -22
  239. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +187 -114
  240. data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +2 -2
  241. data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/do_not_retry_patch_failures_in_cq.py +42 -0
  242. data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +1 -0
  243. data/vendor/depot_tools/recipes/recipe_modules/cipd/__init__.py +0 -1
  244. data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +2 -2
  245. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +0 -1
  246. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +0 -1
  247. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +2 -4
  248. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +0 -1
  249. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +0 -1
  250. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +26 -6
  251. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +23 -5
  252. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +23 -5
  253. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +0 -1
  254. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +0 -1
  255. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +0 -1
  256. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +0 -1
  257. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +0 -1
  258. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +0 -1
  259. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +0 -1
  260. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +0 -1
  261. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +0 -1
  262. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +0 -1
  263. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +0 -1
  264. data/vendor/depot_tools/recipes/recipe_modules/cipd/test_api.py +1 -1
  265. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +4 -1
  266. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +4 -2
  267. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +3 -1
  268. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +4 -2
  269. data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +2 -1
  270. data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +82 -13
  271. data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +23 -11
  272. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +3 -4
  273. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +3 -6
  274. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +3 -4
  275. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +7 -7
  276. data/vendor/depot_tools/recipes/recipe_modules/gclient/resources/diff_deps.py +16 -0
  277. data/vendor/depot_tools/recipes/recipe_modules/gclient/test_api.py +4 -0
  278. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/basic.json +55 -0
  279. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/dont have revision yet.json +84 -0
  280. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/no change, exception.json +83 -0
  281. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/windows.json +55 -0
  282. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.py +88 -0
  283. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +9 -21
  284. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/sync_failure.py +24 -0
  285. data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +2 -1
  286. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +7 -12
  287. data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +0 -2
  288. data/vendor/depot_tools/recipes/recipe_modules/git/api.py +9 -17
  289. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +2 -8
  290. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +2 -8
  291. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +2 -8
  292. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +2 -8
  293. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +2 -8
  294. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +2 -8
  295. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +2 -8
  296. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +3 -13
  297. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +2 -8
  298. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +4 -12
  299. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +2 -10
  300. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +1 -7
  301. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +1 -7
  302. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +0 -8
  303. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +3 -10
  304. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +3 -11
  305. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +2 -8
  306. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +3 -13
  307. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +2 -8
  308. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +2 -8
  309. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +0 -5
  310. data/vendor/depot_tools/recipes/recipe_modules/git_cl/__init__.py +1 -1
  311. data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +7 -13
  312. data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +21 -16
  313. data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.py +1 -2
  314. data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +1 -1
  315. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +0 -1
  316. data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +2 -2
  317. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +0 -1
  318. data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +23 -8
  319. data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +52 -1
  320. data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.py +15 -0
  321. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +1 -0
  322. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +32 -8
  323. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/ancient_version.json +83 -0
  324. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/automatic_version.json +83 -0
  325. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/explicit_version.json +83 -0
  326. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +0 -1
  327. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +5 -4
  328. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +0 -1
  329. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +21 -2
  330. data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +20 -0
  331. data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +235 -3
  332. data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +13 -5
  333. data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.py +5 -1
  334. data/vendor/depot_tools/recipes/recipe_modules/presubmit/properties.proto +14 -0
  335. data/vendor/depot_tools/recipes/recipe_modules/presubmit/test_api.py +19 -0
  336. data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/execute.py +247 -0
  337. data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/prepare.py +49 -0
  338. data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +33 -45
  339. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +0 -1
  340. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +64 -21
  341. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +64 -21
  342. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +1 -22
  343. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +1 -22
  344. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +5 -32
  345. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_fetch_ref_timeout.py +29 -0
  346. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.expected/basic.json +5 -0
  347. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.py +22 -0
  348. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_target_ref.py +32 -0
  349. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +0 -1
  350. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +0 -1
  351. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +2 -1
  352. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +1 -6
  353. data/vendor/depot_tools/recipes/recipes.py +49 -28
  354. data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +11 -6
  355. data/vendor/depot_tools/repo +698 -540
  356. data/vendor/depot_tools/roll-dep +14 -1
  357. data/vendor/depot_tools/roll-dep.bat +10 -1
  358. data/vendor/depot_tools/roll_dep.py +15 -10
  359. data/vendor/depot_tools/scm.py +95 -75
  360. data/vendor/depot_tools/setup_color.py +36 -2
  361. data/vendor/depot_tools/split_cl.py +44 -32
  362. data/vendor/depot_tools/subcommand.py +6 -6
  363. data/vendor/depot_tools/subprocess2.py +38 -322
  364. data/vendor/depot_tools/third_party/colorama/LICENSE.txt +0 -1
  365. data/vendor/depot_tools/third_party/colorama/README.chromium +4 -5
  366. data/vendor/depot_tools/third_party/colorama/README.rst +346 -0
  367. data/vendor/depot_tools/third_party/colorama/__init__.py +3 -4
  368. data/vendor/depot_tools/third_party/colorama/ansi.py +82 -30
  369. data/vendor/depot_tools/third_party/colorama/ansitowin32.py +105 -37
  370. data/vendor/depot_tools/third_party/colorama/initialise.py +39 -15
  371. data/vendor/depot_tools/third_party/colorama/win32.py +46 -28
  372. data/vendor/depot_tools/third_party/colorama/winterm.py +80 -31
  373. data/vendor/depot_tools/update_depot_tools +18 -8
  374. data/vendor/depot_tools/update_depot_tools.bat +19 -15
  375. data/vendor/depot_tools/upload_metrics.py +7 -6
  376. data/vendor/depot_tools/upload_to_google_storage.py +23 -16
  377. data/vendor/depot_tools/vpython +4 -4
  378. data/vendor/depot_tools/vpython.bat +1 -1
  379. data/vendor/depot_tools/vpython3 +55 -0
  380. data/vendor/depot_tools/vpython3.bat +12 -0
  381. data/vendor/depot_tools/watchlists.py +14 -11
  382. data/vendor/depot_tools/weekly +4 -2
  383. data/vendor/depot_tools/win32imports.py +61 -0
  384. data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +49 -41
  385. data/vendor/depot_tools/win_toolchain/package_from_installed.py +142 -149
  386. data/vendor/depot_tools/wtf +5 -3
  387. data/vendor/depot_tools/yapf +5 -1
  388. metadata +68 -343
  389. data/vendor/depot_tools/README.testing +0 -23
  390. data/vendor/depot_tools/annotated_gclient.py +0 -89
  391. data/vendor/depot_tools/appengine_mapper.py +0 -23
  392. data/vendor/depot_tools/bootstrap/win/manifest.txt +0 -20
  393. data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +0 -20
  394. data/vendor/depot_tools/bootstrap/win/pylint.new.bat +0 -7
  395. data/vendor/depot_tools/buildbucket.py +0 -186
  396. data/vendor/depot_tools/checkout.py +0 -431
  397. data/vendor/depot_tools/cros +0 -1
  398. data/vendor/depot_tools/dart_format.py +0 -58
  399. data/vendor/depot_tools/depot-tools-auth +0 -8
  400. data/vendor/depot_tools/depot-tools-auth.py +0 -102
  401. data/vendor/depot_tools/my_reviews.py +0 -396
  402. data/vendor/depot_tools/patch.py +0 -548
  403. data/vendor/depot_tools/pylint.py +0 -30
  404. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +0 -239
  405. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_luci.json +0 -222
  406. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/__init__.py +0 -4
  407. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/api.py +0 -29
  408. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/basic.json +0 -15
  409. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_linux.json +0 -15
  410. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_mac.json +0 -15
  411. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_win.json +0 -15
  412. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_linux.json +0 -15
  413. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_mac.json +0 -15
  414. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_win.json +0 -15
  415. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_linux.json +0 -15
  416. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_mac.json +0 -15
  417. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_win.json +0 -15
  418. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.py +0 -33
  419. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/path_config.py +0 -66
  420. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/set_failure_hash_with_no_steps.json +0 -11
  421. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +0 -45
  422. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +0 -45
  423. data/vendor/depot_tools/rietveld.py +0 -779
  424. data/vendor/depot_tools/roll-dep-svn +0 -8
  425. data/vendor/depot_tools/roll-dep-svn.bat +0 -12
  426. data/vendor/depot_tools/roll_dep_svn.py +0 -430
  427. data/vendor/depot_tools/support/chromite_wrapper +0 -96
  428. data/vendor/depot_tools/third_party/boto/LICENSE +0 -18
  429. data/vendor/depot_tools/third_party/boto/README.chromium +0 -43
  430. data/vendor/depot_tools/third_party/boto/README.rst +0 -163
  431. data/vendor/depot_tools/third_party/boto/__init__.py +0 -793
  432. data/vendor/depot_tools/third_party/boto/auth.py +0 -682
  433. data/vendor/depot_tools/third_party/boto/auth_handler.py +0 -58
  434. data/vendor/depot_tools/third_party/boto/cacerts/__init__.py +0 -22
  435. data/vendor/depot_tools/third_party/boto/cacerts/cacerts.txt +0 -2183
  436. data/vendor/depot_tools/third_party/boto/compat.py +0 -28
  437. data/vendor/depot_tools/third_party/boto/connection.py +0 -1081
  438. data/vendor/depot_tools/third_party/boto/contrib/__init__.py +0 -22
  439. data/vendor/depot_tools/third_party/boto/contrib/ymlmessage.py +0 -52
  440. data/vendor/depot_tools/third_party/boto/core/README +0 -58
  441. data/vendor/depot_tools/third_party/boto/core/__init__.py +0 -23
  442. data/vendor/depot_tools/third_party/boto/core/auth.py +0 -78
  443. data/vendor/depot_tools/third_party/boto/core/credentials.py +0 -154
  444. data/vendor/depot_tools/third_party/boto/core/dictresponse.py +0 -178
  445. data/vendor/depot_tools/third_party/boto/core/service.py +0 -67
  446. data/vendor/depot_tools/third_party/boto/datapipeline/__init__.py +0 -0
  447. data/vendor/depot_tools/third_party/boto/datapipeline/exceptions.py +0 -42
  448. data/vendor/depot_tools/third_party/boto/datapipeline/layer1.py +0 -546
  449. data/vendor/depot_tools/third_party/boto/ecs/__init__.py +0 -90
  450. data/vendor/depot_tools/third_party/boto/ecs/item.py +0 -153
  451. data/vendor/depot_tools/third_party/boto/exception.py +0 -476
  452. data/vendor/depot_tools/third_party/boto/file/README +0 -49
  453. data/vendor/depot_tools/third_party/boto/file/__init__.py +0 -28
  454. data/vendor/depot_tools/third_party/boto/file/bucket.py +0 -112
  455. data/vendor/depot_tools/third_party/boto/file/connection.py +0 -33
  456. data/vendor/depot_tools/third_party/boto/file/key.py +0 -199
  457. data/vendor/depot_tools/third_party/boto/file/simpleresultset.py +0 -30
  458. data/vendor/depot_tools/third_party/boto/fps/__init__.py +0 -21
  459. data/vendor/depot_tools/third_party/boto/fps/connection.py +0 -369
  460. data/vendor/depot_tools/third_party/boto/fps/exception.py +0 -344
  461. data/vendor/depot_tools/third_party/boto/fps/response.py +0 -175
  462. data/vendor/depot_tools/third_party/boto/gs/__init__.py +0 -22
  463. data/vendor/depot_tools/third_party/boto/gs/acl.py +0 -304
  464. data/vendor/depot_tools/third_party/boto/gs/bucket.py +0 -870
  465. data/vendor/depot_tools/third_party/boto/gs/bucketlistresultset.py +0 -64
  466. data/vendor/depot_tools/third_party/boto/gs/connection.py +0 -103
  467. data/vendor/depot_tools/third_party/boto/gs/cors.py +0 -169
  468. data/vendor/depot_tools/third_party/boto/gs/key.py +0 -704
  469. data/vendor/depot_tools/third_party/boto/gs/resumable_upload_handler.py +0 -659
  470. data/vendor/depot_tools/third_party/boto/gs/user.py +0 -54
  471. data/vendor/depot_tools/third_party/boto/handler.py +0 -44
  472. data/vendor/depot_tools/third_party/boto/https_connection.py +0 -124
  473. data/vendor/depot_tools/third_party/boto/jsonresponse.py +0 -163
  474. data/vendor/depot_tools/third_party/boto/manage/__init__.py +0 -23
  475. data/vendor/depot_tools/third_party/boto/manage/cmdshell.py +0 -241
  476. data/vendor/depot_tools/third_party/boto/manage/propget.py +0 -64
  477. data/vendor/depot_tools/third_party/boto/manage/server.py +0 -556
  478. data/vendor/depot_tools/third_party/boto/manage/task.py +0 -175
  479. data/vendor/depot_tools/third_party/boto/manage/test_manage.py +0 -34
  480. data/vendor/depot_tools/third_party/boto/manage/volume.py +0 -420
  481. data/vendor/depot_tools/third_party/boto/mashups/__init__.py +0 -23
  482. data/vendor/depot_tools/third_party/boto/mashups/interactive.py +0 -97
  483. data/vendor/depot_tools/third_party/boto/mashups/iobject.py +0 -115
  484. data/vendor/depot_tools/third_party/boto/mashups/order.py +0 -211
  485. data/vendor/depot_tools/third_party/boto/mashups/server.py +0 -395
  486. data/vendor/depot_tools/third_party/boto/plugin.py +0 -90
  487. data/vendor/depot_tools/third_party/boto/provider.py +0 -337
  488. data/vendor/depot_tools/third_party/boto/pyami/__init__.py +0 -22
  489. data/vendor/depot_tools/third_party/boto/pyami/bootstrap.py +0 -134
  490. data/vendor/depot_tools/third_party/boto/pyami/config.py +0 -229
  491. data/vendor/depot_tools/third_party/boto/pyami/copybot.cfg +0 -60
  492. data/vendor/depot_tools/third_party/boto/pyami/copybot.py +0 -97
  493. data/vendor/depot_tools/third_party/boto/pyami/helloworld.py +0 -28
  494. data/vendor/depot_tools/third_party/boto/pyami/launch_ami.py +0 -178
  495. data/vendor/depot_tools/third_party/boto/pyami/scriptbase.py +0 -44
  496. data/vendor/depot_tools/third_party/boto/pyami/startup.py +0 -60
  497. data/vendor/depot_tools/third_party/boto/regioninfo.py +0 -63
  498. data/vendor/depot_tools/third_party/boto/resultset.py +0 -169
  499. data/vendor/depot_tools/third_party/boto/roboto/__init__.py +0 -1
  500. data/vendor/depot_tools/third_party/boto/roboto/awsqueryrequest.py +0 -504
  501. data/vendor/depot_tools/third_party/boto/roboto/awsqueryservice.py +0 -121
  502. data/vendor/depot_tools/third_party/boto/roboto/param.py +0 -147
  503. data/vendor/depot_tools/third_party/boto/s3/__init__.py +0 -84
  504. data/vendor/depot_tools/third_party/boto/s3/acl.py +0 -164
  505. data/vendor/depot_tools/third_party/boto/s3/bucket.py +0 -1634
  506. data/vendor/depot_tools/third_party/boto/s3/bucketlistresultset.py +0 -139
  507. data/vendor/depot_tools/third_party/boto/s3/bucketlogging.py +0 -83
  508. data/vendor/depot_tools/third_party/boto/s3/connection.py +0 -540
  509. data/vendor/depot_tools/third_party/boto/s3/cors.py +0 -210
  510. data/vendor/depot_tools/third_party/boto/s3/deletemarker.py +0 -55
  511. data/vendor/depot_tools/third_party/boto/s3/key.py +0 -1712
  512. data/vendor/depot_tools/third_party/boto/s3/keyfile.py +0 -134
  513. data/vendor/depot_tools/third_party/boto/s3/lifecycle.py +0 -231
  514. data/vendor/depot_tools/third_party/boto/s3/multidelete.py +0 -138
  515. data/vendor/depot_tools/third_party/boto/s3/multipart.py +0 -315
  516. data/vendor/depot_tools/third_party/boto/s3/prefix.py +0 -42
  517. data/vendor/depot_tools/third_party/boto/s3/resumable_download_handler.py +0 -339
  518. data/vendor/depot_tools/third_party/boto/s3/tagging.py +0 -71
  519. data/vendor/depot_tools/third_party/boto/s3/user.py +0 -49
  520. data/vendor/depot_tools/third_party/boto/s3/website.py +0 -237
  521. data/vendor/depot_tools/third_party/boto/services/__init__.py +0 -23
  522. data/vendor/depot_tools/third_party/boto/services/bs.py +0 -179
  523. data/vendor/depot_tools/third_party/boto/services/message.py +0 -58
  524. data/vendor/depot_tools/third_party/boto/services/result.py +0 -136
  525. data/vendor/depot_tools/third_party/boto/services/service.py +0 -161
  526. data/vendor/depot_tools/third_party/boto/services/servicedef.py +0 -91
  527. data/vendor/depot_tools/third_party/boto/services/sonofmmm.cfg +0 -43
  528. data/vendor/depot_tools/third_party/boto/services/sonofmmm.py +0 -81
  529. data/vendor/depot_tools/third_party/boto/services/submit.py +0 -88
  530. data/vendor/depot_tools/third_party/boto/ses/__init__.py +0 -54
  531. data/vendor/depot_tools/third_party/boto/ses/connection.py +0 -521
  532. data/vendor/depot_tools/third_party/boto/ses/exceptions.py +0 -77
  533. data/vendor/depot_tools/third_party/boto/storage_uri.py +0 -835
  534. data/vendor/depot_tools/third_party/boto/sts/__init__.py +0 -55
  535. data/vendor/depot_tools/third_party/boto/sts/connection.py +0 -207
  536. data/vendor/depot_tools/third_party/boto/sts/credentials.py +0 -215
  537. data/vendor/depot_tools/third_party/boto/utils.py +0 -927
  538. data/vendor/depot_tools/third_party/colorama/README.txt +0 -304
  539. data/vendor/depot_tools/third_party/fancy_urllib/README +0 -22
  540. data/vendor/depot_tools/third_party/fancy_urllib/__init__.py +0 -460
  541. data/vendor/depot_tools/third_party/logilab/README.chromium +0 -6
  542. data/vendor/depot_tools/third_party/logilab/__init__.py +0 -0
  543. data/vendor/depot_tools/third_party/logilab/astroid/LICENSE.txt +0 -340
  544. data/vendor/depot_tools/third_party/logilab/astroid/README.chromium +0 -11
  545. data/vendor/depot_tools/third_party/logilab/astroid/__init__.py +0 -136
  546. data/vendor/depot_tools/third_party/logilab/astroid/__pkginfo__.py +0 -42
  547. data/vendor/depot_tools/third_party/logilab/astroid/arguments.py +0 -233
  548. data/vendor/depot_tools/third_party/logilab/astroid/as_string.py +0 -548
  549. data/vendor/depot_tools/third_party/logilab/astroid/astpeephole.py +0 -86
  550. data/vendor/depot_tools/third_party/logilab/astroid/bases.py +0 -636
  551. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_builtin_inference.py +0 -336
  552. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_dateutil.py +0 -15
  553. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_gi.py +0 -195
  554. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_mechanize.py +0 -18
  555. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_nose.py +0 -82
  556. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_numpy.py +0 -62
  557. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_pytest.py +0 -76
  558. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_qt.py +0 -44
  559. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_six.py +0 -288
  560. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_ssl.py +0 -65
  561. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_stdlib.py +0 -473
  562. data/vendor/depot_tools/third_party/logilab/astroid/builder.py +0 -263
  563. data/vendor/depot_tools/third_party/logilab/astroid/context.py +0 -81
  564. data/vendor/depot_tools/third_party/logilab/astroid/decorators.py +0 -75
  565. data/vendor/depot_tools/third_party/logilab/astroid/exceptions.py +0 -71
  566. data/vendor/depot_tools/third_party/logilab/astroid/inference.py +0 -359
  567. data/vendor/depot_tools/third_party/logilab/astroid/manager.py +0 -267
  568. data/vendor/depot_tools/third_party/logilab/astroid/mixins.py +0 -147
  569. data/vendor/depot_tools/third_party/logilab/astroid/modutils.py +0 -741
  570. data/vendor/depot_tools/third_party/logilab/astroid/node_classes.py +0 -1053
  571. data/vendor/depot_tools/third_party/logilab/astroid/nodes.py +0 -87
  572. data/vendor/depot_tools/third_party/logilab/astroid/objects.py +0 -186
  573. data/vendor/depot_tools/third_party/logilab/astroid/protocols.py +0 -470
  574. data/vendor/depot_tools/third_party/logilab/astroid/raw_building.py +0 -390
  575. data/vendor/depot_tools/third_party/logilab/astroid/rebuilder.py +0 -989
  576. data/vendor/depot_tools/third_party/logilab/astroid/scoped_nodes.py +0 -1716
  577. data/vendor/depot_tools/third_party/logilab/astroid/test_utils.py +0 -201
  578. data/vendor/depot_tools/third_party/logilab/astroid/transforms.py +0 -96
  579. data/vendor/depot_tools/third_party/logilab/astroid/util.py +0 -89
  580. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/LICENSE +0 -19
  581. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/README.chromium +0 -11
  582. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/__init__.py +0 -20
  583. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/cext.c +0 -1421
  584. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/compat.py +0 -9
  585. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/simple.py +0 -246
  586. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/slots.py +0 -414
  587. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/utils.py +0 -13
  588. data/vendor/depot_tools/third_party/logilab/wrapt/LICENSE +0 -24
  589. data/vendor/depot_tools/third_party/logilab/wrapt/README.chromium +0 -11
  590. data/vendor/depot_tools/third_party/logilab/wrapt/__init__.py +0 -19
  591. data/vendor/depot_tools/third_party/logilab/wrapt/_wrappers.c +0 -2729
  592. data/vendor/depot_tools/third_party/logilab/wrapt/arguments.py +0 -96
  593. data/vendor/depot_tools/third_party/logilab/wrapt/decorators.py +0 -512
  594. data/vendor/depot_tools/third_party/logilab/wrapt/importer.py +0 -228
  595. data/vendor/depot_tools/third_party/logilab/wrapt/wrappers.py +0 -901
  596. data/vendor/depot_tools/third_party/mock/LICENSE.txt +0 -26
  597. data/vendor/depot_tools/third_party/mock/README.chromium +0 -24
  598. data/vendor/depot_tools/third_party/mock/__init__.py +0 -2366
  599. data/vendor/depot_tools/third_party/oauth2client/LICENSE +0 -202
  600. data/vendor/depot_tools/third_party/oauth2client/MODIFICATIONS.diff +0 -66
  601. data/vendor/depot_tools/third_party/oauth2client/README.chromium +0 -15
  602. data/vendor/depot_tools/third_party/oauth2client/__init__.py +0 -5
  603. data/vendor/depot_tools/third_party/oauth2client/anyjson.py +0 -32
  604. data/vendor/depot_tools/third_party/oauth2client/appengine.py +0 -963
  605. data/vendor/depot_tools/third_party/oauth2client/client.py +0 -1363
  606. data/vendor/depot_tools/third_party/oauth2client/clientsecrets.py +0 -153
  607. data/vendor/depot_tools/third_party/oauth2client/crypt.py +0 -377
  608. data/vendor/depot_tools/third_party/oauth2client/django_orm.py +0 -134
  609. data/vendor/depot_tools/third_party/oauth2client/file.py +0 -124
  610. data/vendor/depot_tools/third_party/oauth2client/gce.py +0 -90
  611. data/vendor/depot_tools/third_party/oauth2client/keyring_storage.py +0 -109
  612. data/vendor/depot_tools/third_party/oauth2client/locked_file.py +0 -373
  613. data/vendor/depot_tools/third_party/oauth2client/multistore_file.py +0 -465
  614. data/vendor/depot_tools/third_party/oauth2client/old_run.py +0 -160
  615. data/vendor/depot_tools/third_party/oauth2client/tools.py +0 -243
  616. data/vendor/depot_tools/third_party/oauth2client/util.py +0 -196
  617. data/vendor/depot_tools/third_party/oauth2client/xsrfutil.py +0 -113
  618. data/vendor/depot_tools/third_party/protobuf26/README.chromium +0 -23
  619. data/vendor/depot_tools/third_party/protobuf26/__init__.py +0 -0
  620. data/vendor/depot_tools/third_party/protobuf26/compiler/__init__.py +0 -0
  621. data/vendor/depot_tools/third_party/protobuf26/compiler/plugin_pb2.py +0 -184
  622. data/vendor/depot_tools/third_party/protobuf26/descriptor.py +0 -849
  623. data/vendor/depot_tools/third_party/protobuf26/descriptor_database.py +0 -137
  624. data/vendor/depot_tools/third_party/protobuf26/descriptor_pb2.py +0 -1522
  625. data/vendor/depot_tools/third_party/protobuf26/descriptor_pool.py +0 -643
  626. data/vendor/depot_tools/third_party/protobuf26/internal/__init__.py +0 -0
  627. data/vendor/depot_tools/third_party/protobuf26/internal/api_implementation.py +0 -89
  628. data/vendor/depot_tools/third_party/protobuf26/internal/containers.py +0 -269
  629. data/vendor/depot_tools/third_party/protobuf26/internal/cpp_message.py +0 -663
  630. data/vendor/depot_tools/third_party/protobuf26/internal/decoder.py +0 -831
  631. data/vendor/depot_tools/third_party/protobuf26/internal/encoder.py +0 -788
  632. data/vendor/depot_tools/third_party/protobuf26/internal/enum_type_wrapper.py +0 -89
  633. data/vendor/depot_tools/third_party/protobuf26/internal/message_listener.py +0 -78
  634. data/vendor/depot_tools/third_party/protobuf26/internal/python_message.py +0 -1247
  635. data/vendor/depot_tools/third_party/protobuf26/internal/type_checkers.py +0 -328
  636. data/vendor/depot_tools/third_party/protobuf26/internal/wire_format.py +0 -268
  637. data/vendor/depot_tools/third_party/protobuf26/message.py +0 -284
  638. data/vendor/depot_tools/third_party/protobuf26/message_factory.py +0 -155
  639. data/vendor/depot_tools/third_party/protobuf26/reflection.py +0 -205
  640. data/vendor/depot_tools/third_party/protobuf26/service.py +0 -226
  641. data/vendor/depot_tools/third_party/protobuf26/service_reflection.py +0 -284
  642. data/vendor/depot_tools/third_party/protobuf26/symbol_database.py +0 -185
  643. data/vendor/depot_tools/third_party/protobuf26/text_encoding.py +0 -110
  644. data/vendor/depot_tools/third_party/protobuf26/text_format.py +0 -873
  645. data/vendor/depot_tools/third_party/pylint.py +0 -37
  646. data/vendor/depot_tools/third_party/pylint/LICENSE.txt +0 -340
  647. data/vendor/depot_tools/third_party/pylint/README.chromium +0 -30
  648. data/vendor/depot_tools/third_party/pylint/__init__.py +0 -46
  649. data/vendor/depot_tools/third_party/pylint/__main__.py +0 -3
  650. data/vendor/depot_tools/third_party/pylint/__pkginfo__.py +0 -80
  651. data/vendor/depot_tools/third_party/pylint/checkers/__init__.py +0 -123
  652. data/vendor/depot_tools/third_party/pylint/checkers/async.py +0 -82
  653. data/vendor/depot_tools/third_party/pylint/checkers/base.py +0 -2010
  654. data/vendor/depot_tools/third_party/pylint/checkers/classes.py +0 -1120
  655. data/vendor/depot_tools/third_party/pylint/checkers/design_analysis.py +0 -348
  656. data/vendor/depot_tools/third_party/pylint/checkers/exceptions.py +0 -369
  657. data/vendor/depot_tools/third_party/pylint/checkers/format.py +0 -993
  658. data/vendor/depot_tools/third_party/pylint/checkers/imports.py +0 -654
  659. data/vendor/depot_tools/third_party/pylint/checkers/logging.py +0 -258
  660. data/vendor/depot_tools/third_party/pylint/checkers/misc.py +0 -105
  661. data/vendor/depot_tools/third_party/pylint/checkers/newstyle.py +0 -169
  662. data/vendor/depot_tools/third_party/pylint/checkers/python3.py +0 -591
  663. data/vendor/depot_tools/third_party/pylint/checkers/raw_metrics.py +0 -129
  664. data/vendor/depot_tools/third_party/pylint/checkers/similar.py +0 -371
  665. data/vendor/depot_tools/third_party/pylint/checkers/spelling.py +0 -264
  666. data/vendor/depot_tools/third_party/pylint/checkers/stdlib.py +0 -280
  667. data/vendor/depot_tools/third_party/pylint/checkers/strings.py +0 -618
  668. data/vendor/depot_tools/third_party/pylint/checkers/typecheck.py +0 -974
  669. data/vendor/depot_tools/third_party/pylint/checkers/utils.py +0 -741
  670. data/vendor/depot_tools/third_party/pylint/checkers/variables.py +0 -1191
  671. data/vendor/depot_tools/third_party/pylint/config.py +0 -820
  672. data/vendor/depot_tools/third_party/pylint/epylint.py +0 -181
  673. data/vendor/depot_tools/third_party/pylint/extensions/__init__.py +0 -0
  674. data/vendor/depot_tools/third_party/pylint/extensions/check_docs.py +0 -311
  675. data/vendor/depot_tools/third_party/pylint/extensions/check_elif.py +0 -62
  676. data/vendor/depot_tools/third_party/pylint/graph.py +0 -179
  677. data/vendor/depot_tools/third_party/pylint/gui.py +0 -531
  678. data/vendor/depot_tools/third_party/pylint/interfaces.py +0 -102
  679. data/vendor/depot_tools/third_party/pylint/lint.py +0 -1381
  680. data/vendor/depot_tools/third_party/pylint/pyreverse/__init__.py +0 -5
  681. data/vendor/depot_tools/third_party/pylint/pyreverse/diadefslib.py +0 -230
  682. data/vendor/depot_tools/third_party/pylint/pyreverse/diagrams.py +0 -258
  683. data/vendor/depot_tools/third_party/pylint/pyreverse/inspector.py +0 -372
  684. data/vendor/depot_tools/third_party/pylint/pyreverse/main.py +0 -147
  685. data/vendor/depot_tools/third_party/pylint/pyreverse/utils.py +0 -210
  686. data/vendor/depot_tools/third_party/pylint/pyreverse/vcgutils.py +0 -198
  687. data/vendor/depot_tools/third_party/pylint/pyreverse/writer.py +0 -198
  688. data/vendor/depot_tools/third_party/pylint/reporters/__init__.py +0 -149
  689. data/vendor/depot_tools/third_party/pylint/reporters/guireporter.py +0 -27
  690. data/vendor/depot_tools/third_party/pylint/reporters/html.py +0 -108
  691. data/vendor/depot_tools/third_party/pylint/reporters/json.py +0 -64
  692. data/vendor/depot_tools/third_party/pylint/reporters/text.py +0 -237
  693. data/vendor/depot_tools/third_party/pylint/reporters/ureports/__init__.py +0 -106
  694. data/vendor/depot_tools/third_party/pylint/reporters/ureports/html_writer.py +0 -93
  695. data/vendor/depot_tools/third_party/pylint/reporters/ureports/nodes.py +0 -181
  696. data/vendor/depot_tools/third_party/pylint/reporters/ureports/text_writer.py +0 -99
  697. data/vendor/depot_tools/third_party/pylint/testutils.py +0 -414
  698. data/vendor/depot_tools/third_party/pylint/utils.py +0 -1148
  699. data/vendor/depot_tools/third_party/pymox/COPYING +0 -202
  700. data/vendor/depot_tools/third_party/pymox/MANIFEST.in +0 -5
  701. data/vendor/depot_tools/third_party/pymox/README +0 -56
  702. data/vendor/depot_tools/third_party/pymox/__init__.py +0 -0
  703. data/vendor/depot_tools/third_party/pymox/mox.py +0 -1643
  704. data/vendor/depot_tools/third_party/pymox/mox_test.py +0 -1708
  705. data/vendor/depot_tools/third_party/pymox/mox_test_helper.py +0 -76
  706. data/vendor/depot_tools/third_party/pymox/setup.py +0 -14
  707. data/vendor/depot_tools/third_party/pymox/stubout.py +0 -142
  708. data/vendor/depot_tools/third_party/pymox/stubout_test.py +0 -47
  709. data/vendor/depot_tools/third_party/pymox/stubout_testee.py +0 -2
  710. data/vendor/depot_tools/third_party/simplejson/LICENSE.txt +0 -19
  711. data/vendor/depot_tools/third_party/simplejson/PKG-INFO +0 -29
  712. data/vendor/depot_tools/third_party/simplejson/__init__.py +0 -437
  713. data/vendor/depot_tools/third_party/simplejson/decoder.py +0 -421
  714. data/vendor/depot_tools/third_party/simplejson/encoder.py +0 -501
  715. data/vendor/depot_tools/third_party/simplejson/ordered_dict.py +0 -119
  716. data/vendor/depot_tools/third_party/simplejson/scanner.py +0 -77
  717. data/vendor/depot_tools/third_party/simplejson/tool.py +0 -39
  718. 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 " ".join(map(pipes.quote, sys.argv[1:]))' "$@")"
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 "".join(random.sample(string.lowercase, 16))')
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 'end' of your PATH (you will probably want to put this
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=$PATH:/path/to/depot_tools**
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 'start' of your PATH (must be ahead of any installs of
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 'You must run ./make_docs.sh once before running this script.'
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'. This is considered to be the 'root' branch.
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/master', as configured by `depot-tools.upstream`, see
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.googlesource.com/infra/infra/+/master/go/src/infra/appengine/depot_tools_metrics/metrics/metrics_schema.json#45
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
- - A timestamp, with a week resolution.
38
- - The age of your depot\_tools checkout, with a week resolution.
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, with a week resolution.
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.googlesource.com/infra/infra/+/master/go/src/infra/appengine/depot_tools_metrics/metrics/metrics_schema.json#45
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 = subprocess.Popen([sys.executable, UPLOAD_SCRIPT], stdin=subprocess.PIPE)
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
- # splitted CL.
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', metrics_utils.seconds_to_weeks(time.time()))
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.iteritems():
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
- # Get the age of the checkout in weeks.
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 xrange(config_version + 1, CURRENT_VERSION + 1):
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 vpython
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/5/12 for stats since 4/5/12.
13
- - my_activity.py -b 4/5/12 -e 6/7/12 for stats between 4/5/12 and 6/7/12.
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
- # [VPYTHON:BEGIN]
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
- from functools import partial
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
- from third_party import httplib2
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, basestring) and key not in kwds:
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
- rietveld_instances = [
75
+ gerrit_instances = [
79
76
  {
80
- 'url': 'codereview.chromium.org',
81
- 'shorturl': 'crrev.com',
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': 'chromereviews.googleplex.com',
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 % 3) - 1, days=(date.day - 1)))
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 = raw_input(msg + ' yes/no [no] ')
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, e:
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'] = self.extract_bug_numbers_from_description(issue)
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 authenticator.authorize(httplib2.Http(timeout=600))
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 = urllib.urlencode(query)
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
- # TODO(tandrii): support non-chromium email, too.
542
- user_str = '%s@chromium.org' % self.user
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 self.options.output_format_heading.format(heading=heading)
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 DefaultFormatter().format(output_format, **values).encode(
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(rietveld_instances) + len(gerrit_instances)
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(rietveld_changes) + list(gerrit_changes)
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(rietveld_instances) + len(gerrit_instances)
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(rietveld_reviews) + list(gerrit_reviews)
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.iteritems():
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 ' ', # this prints one space due to comma, but no newline
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 '', # this prints one space due to comma, but no newline
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 self.options.output_format_no_url.format(title='Other changes')
651
+ print(self.options.output_format_no_url.format(title='Other changes'))
822
652
  for change in changes_without_issue:
823
- print '', # this prints one space due to comma, but no newline
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.iteritems() if k not in ignore_keys)
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 json.dumps(output, indent=2, cls=PythonObjectEncoder)
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
- options.user = username(options.user)
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.AuthenticationError as e:
1093
- logging.error('auth.AuthenticationError: %s', e)
926
+ except auth.LoginRequiredError as e:
927
+ logging.error('auth.LoginRequiredError: %s', e)
1094
928
 
1095
929
  my_activity.show_progress('\n')
1096
930