libv8 6.7.288.46.1 → 7.3.492.27.0beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (408) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -0
  3. data/CHANGELOG.md +4 -0
  4. data/README.md +2 -0
  5. data/ext/libv8/builder.rb +6 -2
  6. data/lib/libv8/version.rb +1 -1
  7. data/vendor/depot_tools/.gitattributes +1 -0
  8. data/vendor/depot_tools/.gitignore +7 -0
  9. data/vendor/depot_tools/CROS_OWNERS +5 -0
  10. data/vendor/depot_tools/OWNERS +12 -1
  11. data/vendor/depot_tools/PRESUBMIT.py +16 -9
  12. data/vendor/depot_tools/README.md +9 -2
  13. data/vendor/depot_tools/autoninja +14 -6
  14. data/vendor/depot_tools/autoninja.bat +11 -1
  15. data/vendor/depot_tools/autoninja.py +40 -18
  16. data/vendor/depot_tools/bb +12 -0
  17. data/vendor/depot_tools/bb.bat +7 -0
  18. data/vendor/depot_tools/bootstrap/win/manifest.txt +1 -1
  19. data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +1 -1
  20. data/vendor/depot_tools/bootstrap/win/win_tools.py +2 -1
  21. data/vendor/depot_tools/buildbucket.py +57 -4
  22. data/vendor/depot_tools/cipd +157 -44
  23. data/vendor/depot_tools/cipd.bat +51 -14
  24. data/vendor/depot_tools/cipd.ps1 +104 -42
  25. data/vendor/depot_tools/cipd_client_version +1 -1
  26. data/vendor/depot_tools/cipd_client_version.digests +21 -0
  27. data/vendor/depot_tools/cipd_manifest.txt +19 -6
  28. data/vendor/depot_tools/cipd_manifest.versions +318 -0
  29. data/vendor/depot_tools/clang_format.py +4 -4
  30. data/vendor/depot_tools/cpplint.py +44 -199
  31. data/vendor/depot_tools/dart_format.py +2 -2
  32. data/vendor/depot_tools/detect_host_arch.py +8 -3
  33. data/vendor/depot_tools/download_from_google_storage.py +47 -39
  34. data/vendor/depot_tools/fetch.py +30 -18
  35. data/vendor/depot_tools/fetch_configs/android_internal.py +34 -0
  36. data/vendor/depot_tools/fetch_configs/chromium.py +18 -1
  37. data/vendor/depot_tools/fetch_configs/config_util.py +4 -2
  38. data/vendor/depot_tools/fetch_configs/inspector_protocol.py +40 -0
  39. data/vendor/depot_tools/fetch_configs/node-ci.py +41 -0
  40. data/vendor/depot_tools/fix_encoding.py +3 -3
  41. data/vendor/depot_tools/gclient +1 -1
  42. data/vendor/depot_tools/gclient.py +415 -198
  43. data/vendor/depot_tools/gclient_eval.py +220 -171
  44. data/vendor/depot_tools/gclient_paths.py +142 -0
  45. data/vendor/depot_tools/gclient_scm.py +200 -51
  46. data/vendor/depot_tools/gclient_utils.py +88 -191
  47. data/vendor/depot_tools/gerrit_client.py +13 -0
  48. data/vendor/depot_tools/gerrit_util.py +158 -23
  49. data/vendor/depot_tools/git-nav-upstream +1 -1
  50. data/vendor/depot_tools/git_cache.py +77 -24
  51. data/vendor/depot_tools/git_cl.py +705 -1099
  52. data/vendor/depot_tools/git_common.py +9 -6
  53. data/vendor/depot_tools/git_map_branches.py +19 -2
  54. data/vendor/depot_tools/git_nav_downstream.py +3 -4
  55. data/vendor/depot_tools/git_rebase_update.py +14 -0
  56. data/vendor/depot_tools/git_reparent_branch.py +8 -2
  57. data/vendor/depot_tools/gn.py +38 -3
  58. data/vendor/depot_tools/gsutil.py +8 -3
  59. data/vendor/depot_tools/gsutil.py.bat +15 -0
  60. data/vendor/depot_tools/gsutil.vpython +16 -0
  61. data/vendor/depot_tools/infra/config/OWNERS +0 -1
  62. data/vendor/depot_tools/infra/config/recipes.cfg +3 -2
  63. data/vendor/depot_tools/lucicfg +12 -0
  64. data/vendor/depot_tools/lucicfg.bat +7 -0
  65. data/vendor/depot_tools/man/html/git-map-branches.html +34 -2
  66. data/vendor/depot_tools/man/html/git-new-branch.html +40 -32
  67. data/vendor/depot_tools/man/man1/git-map-branches.1 +24 -5
  68. data/vendor/depot_tools/man/man1/git-new-branch.1 +35 -27
  69. data/vendor/depot_tools/man/src/git-map-branches.demo.1.sh +1 -0
  70. data/vendor/depot_tools/man/src/git-map-branches.txt +10 -0
  71. data/vendor/depot_tools/man/src/git-new-branch.demo.1.sh +9 -4
  72. data/vendor/depot_tools/man/src/git-new-branch.txt +1 -1
  73. data/vendor/depot_tools/metrics.README.md +98 -0
  74. data/vendor/depot_tools/metrics.py +296 -0
  75. data/vendor/depot_tools/metrics_utils.py +303 -0
  76. data/vendor/depot_tools/my_activity.py +91 -29
  77. data/vendor/depot_tools/ninja +1 -1
  78. data/vendor/depot_tools/ninjalog.README.md +64 -0
  79. data/vendor/depot_tools/ninjalog_uploader.py +232 -0
  80. data/vendor/depot_tools/ninjalog_uploader_wrapper.py +116 -0
  81. data/vendor/depot_tools/owners.py +30 -13
  82. data/vendor/depot_tools/owners_finder.py +5 -2
  83. data/vendor/depot_tools/presubmit_canned_checks.py +188 -29
  84. data/vendor/depot_tools/presubmit_support.py +18 -41
  85. data/vendor/depot_tools/pylintrc +23 -19
  86. data/vendor/depot_tools/recipes/OWNERS +2 -0
  87. data/vendor/depot_tools/recipes/README.recipes.md +344 -151
  88. data/vendor/depot_tools/recipes/recipe_modules/bot_update/OWNERS +2 -0
  89. data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +2 -16
  90. data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +141 -99
  91. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +5 -8
  92. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +5 -8
  93. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +6 -98
  94. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +4 -9
  95. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +45 -5
  96. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +4 -9
  97. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +4 -9
  98. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{tryjob.json → input_commit_with_id_without_repo.json} +6 -11
  99. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{tryjob_empty_revision.json → multiple_patch_refs.json} +8 -9
  100. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +19 -29
  101. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{trychange.json → refs.json} +4 -9
  102. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +4 -9
  103. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +51 -6
  104. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +50 -6
  105. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +51 -6
  106. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +17 -25
  107. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +17 -25
  108. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +18 -26
  109. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +18 -26
  110. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +26 -28
  111. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +45 -5
  112. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +17 -25
  113. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +13 -0
  114. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_manifest_name.json +13 -152
  115. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +4 -9
  116. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +185 -202
  117. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +52 -157
  118. data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +5 -14
  119. data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +34 -0
  120. data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +14 -2
  121. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +4 -5
  122. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +4 -5
  123. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +7 -5
  124. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +4 -5
  125. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +4 -5
  126. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +9 -3
  127. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +9 -3
  128. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +9 -3
  129. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +4 -5
  130. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +2 -3
  131. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +2 -3
  132. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +2 -3
  133. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +2 -3
  134. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +2 -3
  135. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +2 -3
  136. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +2 -3
  137. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +2 -3
  138. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +2 -3
  139. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +2 -3
  140. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +13 -8
  141. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +18 -12
  142. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +18 -12
  143. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +18 -12
  144. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.py +3 -0
  145. data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +1 -0
  146. data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +58 -46
  147. data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +65 -22
  148. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +20 -21
  149. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +20 -21
  150. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +20 -21
  151. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +20 -21
  152. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +5 -2
  153. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +62 -14
  154. data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +24 -38
  155. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +56 -50
  156. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.py +15 -9
  157. data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +4 -1
  158. data/vendor/depot_tools/recipes/recipe_modules/git/api.py +34 -22
  159. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +5 -6
  160. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +5 -6
  161. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +5 -6
  162. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +5 -6
  163. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_luci.json +222 -0
  164. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +5 -6
  165. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +5 -6
  166. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +224 -0
  167. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +10 -6
  168. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +5 -7
  169. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +5 -6
  170. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +5 -6
  171. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +5 -7
  172. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +5 -6
  173. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +10 -5
  174. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +5 -6
  175. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +8 -9
  176. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +5 -6
  177. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +12 -8
  178. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +5 -6
  179. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +5 -6
  180. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +27 -11
  181. data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +1 -1
  182. data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +12 -13
  183. data/vendor/depot_tools/recipes/recipe_modules/gitiles/__init__.py +5 -0
  184. data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +120 -5
  185. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +45 -3
  186. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.py +25 -0
  187. data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +56 -4
  188. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +6 -0
  189. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.py +49 -0
  190. data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +24 -13
  191. data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +13 -14
  192. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/basic.json +2 -3
  193. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_linux.json +2 -3
  194. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_mac.json +2 -3
  195. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_win.json +2 -3
  196. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_linux.json +2 -3
  197. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_mac.json +2 -3
  198. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_win.json +2 -3
  199. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_linux.json +2 -3
  200. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_mac.json +2 -3
  201. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_win.json +2 -3
  202. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/path_config.py +1 -2
  203. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +35 -0
  204. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +116 -0
  205. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +22 -0
  206. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +82 -0
  207. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +22 -0
  208. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +23 -0
  209. data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +1 -0
  210. data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +2 -7
  211. data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +7 -6
  212. data/vendor/depot_tools/recipes/recipe_modules/tryserver/__init__.py +1 -0
  213. data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +117 -8
  214. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +4 -5
  215. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/set_failure_hash_with_no_steps.json +7 -4
  216. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +98 -7
  217. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +147 -0
  218. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +8 -5
  219. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +8 -5
  220. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +9 -6
  221. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +9 -6
  222. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +27 -2
  223. data/vendor/depot_tools/recipes/recipe_modules/tryserver/test_api.py +14 -0
  224. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/__init__.py +25 -0
  225. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/api.py +137 -0
  226. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +22 -0
  227. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +22 -0
  228. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +107 -0
  229. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +26 -0
  230. data/vendor/depot_tools/recipes/recipes.py +37 -27
  231. data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +7 -10
  232. data/vendor/depot_tools/repo +34 -8
  233. data/vendor/depot_tools/roll_dep.py +52 -49
  234. data/vendor/depot_tools/scm.py +38 -23
  235. data/vendor/depot_tools/setup_color.py +4 -2
  236. data/vendor/depot_tools/split_cl.py +32 -4
  237. data/vendor/depot_tools/subprocess2.py +22 -4
  238. data/vendor/depot_tools/third_party/httplib2/README.chromium +2 -2
  239. data/vendor/depot_tools/third_party/httplib2/__init__.py +242 -158
  240. data/vendor/depot_tools/third_party/httplib2/cacerts.txt +57 -44
  241. data/vendor/depot_tools/third_party/httplib2/socks.py +15 -5
  242. data/vendor/depot_tools/third_party/logilab/README.chromium +2 -4
  243. data/vendor/depot_tools/third_party/logilab/astroid/README.chromium +2 -1
  244. data/vendor/depot_tools/third_party/logilab/astroid/__init__.py +10 -5
  245. data/vendor/depot_tools/third_party/logilab/astroid/__pkginfo__.py +5 -5
  246. data/vendor/depot_tools/third_party/logilab/astroid/arguments.py +233 -0
  247. data/vendor/depot_tools/third_party/logilab/astroid/as_string.py +82 -33
  248. data/vendor/depot_tools/third_party/logilab/astroid/bases.py +137 -153
  249. data/vendor/depot_tools/third_party/logilab/astroid/brain/{builtin_inference.py → brain_builtin_inference.py} +117 -26
  250. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_dateutil.py +15 -0
  251. data/vendor/depot_tools/third_party/logilab/astroid/brain/{py2gi.py → brain_gi.py} +48 -8
  252. data/vendor/depot_tools/third_party/logilab/astroid/brain/{py2mechanize.py → brain_mechanize.py} +0 -0
  253. data/vendor/depot_tools/third_party/logilab/astroid/brain/{pynose.py → brain_nose.py} +4 -1
  254. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_numpy.py +62 -0
  255. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_pytest.py +76 -0
  256. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_qt.py +44 -0
  257. data/vendor/depot_tools/third_party/logilab/astroid/brain/{pysix_moves.py → brain_six.py} +28 -1
  258. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_ssl.py +65 -0
  259. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_stdlib.py +473 -0
  260. data/vendor/depot_tools/third_party/logilab/astroid/builder.py +104 -81
  261. data/vendor/depot_tools/third_party/logilab/astroid/context.py +81 -0
  262. data/vendor/depot_tools/third_party/logilab/astroid/decorators.py +75 -0
  263. data/vendor/depot_tools/third_party/logilab/astroid/exceptions.py +20 -0
  264. data/vendor/depot_tools/third_party/logilab/astroid/inference.py +137 -183
  265. data/vendor/depot_tools/third_party/logilab/astroid/manager.py +45 -169
  266. data/vendor/depot_tools/third_party/logilab/astroid/mixins.py +37 -14
  267. data/vendor/depot_tools/third_party/logilab/astroid/modutils.py +112 -41
  268. data/vendor/depot_tools/third_party/logilab/astroid/node_classes.py +243 -156
  269. data/vendor/depot_tools/third_party/logilab/astroid/nodes.py +35 -22
  270. data/vendor/depot_tools/third_party/logilab/astroid/objects.py +186 -0
  271. data/vendor/depot_tools/third_party/logilab/astroid/protocols.py +157 -102
  272. data/vendor/depot_tools/third_party/logilab/astroid/raw_building.py +32 -8
  273. data/vendor/depot_tools/third_party/logilab/astroid/rebuilder.py +372 -309
  274. data/vendor/depot_tools/third_party/logilab/astroid/scoped_nodes.py +652 -420
  275. data/vendor/depot_tools/third_party/logilab/astroid/test_utils.py +4 -21
  276. data/vendor/depot_tools/third_party/logilab/astroid/transforms.py +96 -0
  277. data/vendor/depot_tools/third_party/logilab/astroid/util.py +89 -0
  278. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/LICENSE +19 -0
  279. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/README.chromium +11 -0
  280. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/__init__.py +20 -0
  281. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/cext.c +1421 -0
  282. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/compat.py +9 -0
  283. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/simple.py +246 -0
  284. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/slots.py +414 -0
  285. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/utils.py +13 -0
  286. data/vendor/depot_tools/third_party/logilab/wrapt/LICENSE +24 -0
  287. data/vendor/depot_tools/third_party/logilab/wrapt/README.chromium +11 -0
  288. data/vendor/depot_tools/third_party/logilab/wrapt/__init__.py +19 -0
  289. data/vendor/depot_tools/third_party/logilab/wrapt/_wrappers.c +2729 -0
  290. data/vendor/depot_tools/third_party/logilab/wrapt/arguments.py +96 -0
  291. data/vendor/depot_tools/third_party/logilab/wrapt/decorators.py +512 -0
  292. data/vendor/depot_tools/third_party/logilab/wrapt/importer.py +228 -0
  293. data/vendor/depot_tools/third_party/logilab/wrapt/wrappers.py +901 -0
  294. data/vendor/depot_tools/third_party/pylint/README.chromium +2 -25
  295. data/vendor/depot_tools/third_party/pylint/__pkginfo__.py +13 -3
  296. data/vendor/depot_tools/third_party/pylint/checkers/__init__.py +1 -2
  297. data/vendor/depot_tools/third_party/pylint/checkers/async.py +82 -0
  298. data/vendor/depot_tools/third_party/pylint/checkers/base.py +893 -119
  299. data/vendor/depot_tools/third_party/pylint/checkers/classes.py +342 -204
  300. data/vendor/depot_tools/third_party/pylint/checkers/design_analysis.py +51 -34
  301. data/vendor/depot_tools/third_party/pylint/checkers/exceptions.py +84 -47
  302. data/vendor/depot_tools/third_party/pylint/checkers/format.py +55 -30
  303. data/vendor/depot_tools/third_party/pylint/checkers/imports.py +314 -73
  304. data/vendor/depot_tools/third_party/pylint/checkers/logging.py +10 -8
  305. data/vendor/depot_tools/third_party/pylint/checkers/misc.py +2 -1
  306. data/vendor/depot_tools/third_party/pylint/checkers/newstyle.py +45 -48
  307. data/vendor/depot_tools/third_party/pylint/checkers/python3.py +31 -21
  308. data/vendor/depot_tools/third_party/pylint/checkers/raw_metrics.py +3 -3
  309. data/vendor/depot_tools/third_party/pylint/checkers/similar.py +4 -5
  310. data/vendor/depot_tools/third_party/pylint/checkers/spelling.py +24 -10
  311. data/vendor/depot_tools/third_party/pylint/checkers/stdlib.py +120 -56
  312. data/vendor/depot_tools/third_party/pylint/checkers/strings.py +38 -35
  313. data/vendor/depot_tools/third_party/pylint/checkers/typecheck.py +485 -138
  314. data/vendor/depot_tools/third_party/pylint/checkers/utils.py +319 -142
  315. data/vendor/depot_tools/third_party/pylint/checkers/variables.py +329 -207
  316. data/vendor/depot_tools/third_party/pylint/config.py +739 -76
  317. data/vendor/depot_tools/third_party/pylint/epylint.py +9 -5
  318. data/vendor/depot_tools/third_party/pylint/extensions/__init__.py +0 -0
  319. data/vendor/depot_tools/third_party/pylint/extensions/check_docs.py +311 -0
  320. data/vendor/depot_tools/third_party/pylint/extensions/check_elif.py +62 -0
  321. data/vendor/depot_tools/third_party/{logilab/common → pylint}/graph.py +30 -133
  322. data/vendor/depot_tools/third_party/pylint/gui.py +2 -2
  323. data/vendor/depot_tools/third_party/pylint/interfaces.py +21 -3
  324. data/vendor/depot_tools/third_party/pylint/lint.py +123 -140
  325. data/vendor/depot_tools/third_party/pylint/pyreverse/diadefslib.py +10 -13
  326. data/vendor/depot_tools/third_party/pylint/pyreverse/diagrams.py +15 -4
  327. data/vendor/depot_tools/third_party/pylint/pyreverse/inspector.py +372 -0
  328. data/vendor/depot_tools/third_party/pylint/pyreverse/main.py +30 -7
  329. data/vendor/depot_tools/third_party/pylint/pyreverse/utils.py +80 -2
  330. data/vendor/depot_tools/third_party/{logilab/common → pylint/pyreverse}/vcgutils.py +19 -37
  331. data/vendor/depot_tools/third_party/pylint/pyreverse/writer.py +3 -4
  332. data/vendor/depot_tools/third_party/pylint/reporters/__init__.py +34 -18
  333. data/vendor/depot_tools/third_party/pylint/reporters/guireporter.py +1 -1
  334. data/vendor/depot_tools/third_party/pylint/reporters/html.py +10 -3
  335. data/vendor/depot_tools/third_party/pylint/reporters/json.py +10 -4
  336. data/vendor/depot_tools/third_party/pylint/reporters/text.py +94 -3
  337. data/vendor/depot_tools/third_party/pylint/reporters/ureports/__init__.py +106 -0
  338. data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/html_writer.py +17 -57
  339. data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/nodes.py +52 -74
  340. data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/text_writer.py +14 -60
  341. data/vendor/depot_tools/third_party/pylint/testutils.py +22 -20
  342. data/vendor/depot_tools/third_party/pylint/utils.py +268 -44
  343. data/vendor/depot_tools/third_party/repo/progress.py +42 -0
  344. data/vendor/depot_tools/update_depot_tools +1 -1
  345. data/vendor/depot_tools/upload_metrics.py +25 -0
  346. data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +45 -15
  347. data/vendor/depot_tools/win_toolchain/package_from_installed.py +71 -24
  348. data/vendor/depot_tools/yapf +1 -1
  349. data/vendor/depot_tools/yapf.bat +1 -1
  350. metadata +92 -77
  351. data/vendor/depot_tools/git-crsync +0 -3
  352. data/vendor/depot_tools/infra/config/cq.cfg +0 -32
  353. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref.json +0 -29
  354. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref_custom.json +0 -29
  355. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/buildbot.json +0 -105
  356. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/shallow.json +0 -195
  357. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle_deprecated.json +0 -248
  358. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8.json +0 -248
  359. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_manifest_name_no_patch.json +0 -105
  360. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/apply_gerrit.py +0 -33
  361. data/vendor/depot_tools/third_party/logilab/astroid/brain/py2pytest.py +0 -31
  362. data/vendor/depot_tools/third_party/logilab/astroid/brain/py2qt4.py +0 -22
  363. data/vendor/depot_tools/third_party/logilab/astroid/brain/py2stdlib.py +0 -334
  364. data/vendor/depot_tools/third_party/logilab/astroid/inspector.py +0 -273
  365. data/vendor/depot_tools/third_party/logilab/astroid/utils.py +0 -239
  366. data/vendor/depot_tools/third_party/logilab/common/LICENSE.txt +0 -339
  367. data/vendor/depot_tools/third_party/logilab/common/README.chromium +0 -11
  368. data/vendor/depot_tools/third_party/logilab/common/__init__.py +0 -175
  369. data/vendor/depot_tools/third_party/logilab/common/__pkginfo__.py +0 -57
  370. data/vendor/depot_tools/third_party/logilab/common/cache.py +0 -114
  371. data/vendor/depot_tools/third_party/logilab/common/changelog.py +0 -238
  372. data/vendor/depot_tools/third_party/logilab/common/clcommands.py +0 -334
  373. data/vendor/depot_tools/third_party/logilab/common/cli.py +0 -211
  374. data/vendor/depot_tools/third_party/logilab/common/compat.py +0 -78
  375. data/vendor/depot_tools/third_party/logilab/common/configuration.py +0 -1105
  376. data/vendor/depot_tools/third_party/logilab/common/contexts.py +0 -5
  377. data/vendor/depot_tools/third_party/logilab/common/corbautils.py +0 -117
  378. data/vendor/depot_tools/third_party/logilab/common/daemon.py +0 -101
  379. data/vendor/depot_tools/third_party/logilab/common/date.py +0 -335
  380. data/vendor/depot_tools/third_party/logilab/common/dbf.py +0 -231
  381. data/vendor/depot_tools/third_party/logilab/common/debugger.py +0 -214
  382. data/vendor/depot_tools/third_party/logilab/common/decorators.py +0 -281
  383. data/vendor/depot_tools/third_party/logilab/common/deprecation.py +0 -189
  384. data/vendor/depot_tools/third_party/logilab/common/fileutils.py +0 -404
  385. data/vendor/depot_tools/third_party/logilab/common/interface.py +0 -71
  386. data/vendor/depot_tools/third_party/logilab/common/logging_ext.py +0 -195
  387. data/vendor/depot_tools/third_party/logilab/common/modutils.py +0 -702
  388. data/vendor/depot_tools/third_party/logilab/common/optik_ext.py +0 -392
  389. data/vendor/depot_tools/third_party/logilab/common/optparser.py +0 -92
  390. data/vendor/depot_tools/third_party/logilab/common/proc.py +0 -277
  391. data/vendor/depot_tools/third_party/logilab/common/pyro_ext.py +0 -180
  392. data/vendor/depot_tools/third_party/logilab/common/pytest.py +0 -1199
  393. data/vendor/depot_tools/third_party/logilab/common/registry.py +0 -1119
  394. data/vendor/depot_tools/third_party/logilab/common/shellutils.py +0 -462
  395. data/vendor/depot_tools/third_party/logilab/common/sphinx_ext.py +0 -87
  396. data/vendor/depot_tools/third_party/logilab/common/sphinxutils.py +0 -122
  397. data/vendor/depot_tools/third_party/logilab/common/table.py +0 -929
  398. data/vendor/depot_tools/third_party/logilab/common/tasksqueue.py +0 -101
  399. data/vendor/depot_tools/third_party/logilab/common/testlib.py +0 -1392
  400. data/vendor/depot_tools/third_party/logilab/common/textutils.py +0 -537
  401. data/vendor/depot_tools/third_party/logilab/common/tree.py +0 -369
  402. data/vendor/depot_tools/third_party/logilab/common/umessage.py +0 -194
  403. data/vendor/depot_tools/third_party/logilab/common/ureports/__init__.py +0 -172
  404. data/vendor/depot_tools/third_party/logilab/common/ureports/docbook_writer.py +0 -140
  405. data/vendor/depot_tools/third_party/logilab/common/urllib2ext.py +0 -89
  406. data/vendor/depot_tools/third_party/logilab/common/visitor.py +0 -109
  407. data/vendor/depot_tools/third_party/logilab/common/xmlrpcutils.py +0 -131
  408. data/vendor/depot_tools/third_party/logilab/common/xmlutils.py +0 -61
@@ -3,15 +3,29 @@
3
3
  # found in the LICENSE file.
4
4
 
5
5
  import ast
6
- import cStringIO
7
6
  import collections
8
7
  import logging
8
+ import sys
9
9
  import tokenize
10
10
 
11
11
  import gclient_utils
12
12
 
13
13
  from third_party import schema
14
14
 
15
+ if sys.version_info.major == 2:
16
+ # We use cStringIO.StringIO because it is equivalent to Py3's io.StringIO.
17
+ from cStringIO import StringIO
18
+ else:
19
+ from io import StringIO
20
+
21
+
22
+ # TODO(crbug.com/953884): Remove this when python3 migration is done.
23
+ try:
24
+ basestring
25
+ except NameError:
26
+ # pylint: disable=redefined-builtin
27
+ basestring = str
28
+
15
29
 
16
30
  class _NodeDict(collections.MutableMapping):
17
31
  """Dict-like type that also stores information on AST nodes and tokens."""
@@ -20,7 +34,10 @@ class _NodeDict(collections.MutableMapping):
20
34
  self.tokens = tokens
21
35
 
22
36
  def __str__(self):
23
- return str({k: v[0] for k, v in self.data.iteritems()})
37
+ return str({k: v[0] for k, v in self.data.items()})
38
+
39
+ def __repr__(self):
40
+ return self.__str__()
24
41
 
25
42
  def __getitem__(self, key):
26
43
  return self.data[key][0]
@@ -69,141 +86,146 @@ def _NodeDictSchema(dict_schema):
69
86
 
70
87
  # See https://github.com/keleshev/schema for docs how to configure schema.
71
88
  _GCLIENT_DEPS_SCHEMA = _NodeDictSchema({
72
- schema.Optional(basestring): schema.Or(
73
- None,
74
- basestring,
75
- _NodeDictSchema({
76
- # Repo and revision to check out under the path
77
- # (same as if no dict was used).
78
- 'url': schema.Or(None, basestring),
79
-
80
- # Optional condition string. The dep will only be processed
81
- # if the condition evaluates to True.
82
- schema.Optional('condition'): basestring,
83
-
84
- schema.Optional('dep_type', default='git'): basestring,
89
+ schema.Optional(basestring):
90
+ schema.Or(
91
+ None,
92
+ basestring,
93
+ _NodeDictSchema({
94
+ # Repo and revision to check out under the path
95
+ # (same as if no dict was used).
96
+ 'url': schema.Or(None, basestring),
97
+
98
+ # Optional condition string. The dep will only be processed
99
+ # if the condition evaluates to True.
100
+ schema.Optional('condition'): basestring,
101
+ schema.Optional('dep_type', default='git'): basestring,
102
+ }),
103
+ # CIPD package.
104
+ _NodeDictSchema({
105
+ 'packages': [
106
+ _NodeDictSchema({
107
+ 'package': basestring,
108
+ 'version': basestring,
109
+ })
110
+ ],
111
+ schema.Optional('condition'): basestring,
112
+ schema.Optional('dep_type', default='cipd'): basestring,
113
+ }),
114
+ ),
115
+ })
116
+
117
+ _GCLIENT_HOOKS_SCHEMA = [
118
+ _NodeDictSchema({
119
+ # Hook action: list of command-line arguments to invoke.
120
+ 'action': [basestring],
121
+
122
+ # Name of the hook. Doesn't affect operation.
123
+ schema.Optional('name'): basestring,
124
+
125
+ # Hook pattern (regex). Originally intended to limit some hooks to run
126
+ # only when files matching the pattern have changed. In practice, with
127
+ # git, gclient runs all the hooks regardless of this field.
128
+ schema.Optional('pattern'): basestring,
129
+
130
+ # Working directory where to execute the hook.
131
+ schema.Optional('cwd'): basestring,
132
+
133
+ # Optional condition string. The hook will only be run
134
+ # if the condition evaluates to True.
135
+ schema.Optional('condition'): basestring,
136
+ })
137
+ ]
138
+
139
+ _GCLIENT_SCHEMA = schema.Schema(
140
+ _NodeDictSchema({
141
+ # List of host names from which dependencies are allowed (whitelist).
142
+ # NOTE: when not present, all hosts are allowed.
143
+ # NOTE: scoped to current DEPS file, not recursive.
144
+ schema.Optional('allowed_hosts'): [schema.Optional(basestring)],
145
+
146
+ # Mapping from paths to repo and revision to check out under that path.
147
+ # Applying this mapping to the on-disk checkout is the main purpose
148
+ # of gclient, and also why the config file is called DEPS.
149
+ #
150
+ # The following functions are allowed:
151
+ #
152
+ # Var(): allows variable substitution (either from 'vars' dict below,
153
+ # or command-line override)
154
+ schema.Optional('deps'): _GCLIENT_DEPS_SCHEMA,
155
+
156
+ # Similar to 'deps' (see above) - also keyed by OS (e.g. 'linux').
157
+ # Also see 'target_os'.
158
+ schema.Optional('deps_os'): _NodeDictSchema({
159
+ schema.Optional(basestring): _GCLIENT_DEPS_SCHEMA,
85
160
  }),
86
- # CIPD package.
87
- _NodeDictSchema({
88
- 'packages': [
89
- _NodeDictSchema({
90
- 'package': basestring,
91
161
 
92
- 'version': basestring,
93
- })
94
- ],
162
+ # Dependency to get gclient_gn_args* settings from. This allows these
163
+ # values to be set in a recursedeps file, rather than requiring that
164
+ # they exist in the top-level solution.
165
+ schema.Optional('gclient_gn_args_from'): basestring,
166
+
167
+ # Path to GN args file to write selected variables.
168
+ schema.Optional('gclient_gn_args_file'): basestring,
95
169
 
96
- schema.Optional('condition'): basestring,
170
+ # Subset of variables to write to the GN args file (see above).
171
+ schema.Optional('gclient_gn_args'): [schema.Optional(basestring)],
97
172
 
98
- schema.Optional('dep_type', default='cipd'): basestring,
173
+ # Hooks executed after gclient sync (unless suppressed), or explicitly
174
+ # on gclient hooks. See _GCLIENT_HOOKS_SCHEMA for details.
175
+ # Also see 'pre_deps_hooks'.
176
+ schema.Optional('hooks'): _GCLIENT_HOOKS_SCHEMA,
177
+
178
+ # Similar to 'hooks', also keyed by OS.
179
+ schema.Optional('hooks_os'): _NodeDictSchema({
180
+ schema.Optional(basestring): _GCLIENT_HOOKS_SCHEMA
99
181
  }),
100
- ),
101
- })
102
182
 
103
- _GCLIENT_HOOKS_SCHEMA = [_NodeDictSchema({
104
- # Hook action: list of command-line arguments to invoke.
105
- 'action': [basestring],
106
-
107
- # Name of the hook. Doesn't affect operation.
108
- schema.Optional('name'): basestring,
109
-
110
- # Hook pattern (regex). Originally intended to limit some hooks to run
111
- # only when files matching the pattern have changed. In practice, with git,
112
- # gclient runs all the hooks regardless of this field.
113
- schema.Optional('pattern'): basestring,
114
-
115
- # Working directory where to execute the hook.
116
- schema.Optional('cwd'): basestring,
117
-
118
- # Optional condition string. The hook will only be run
119
- # if the condition evaluates to True.
120
- schema.Optional('condition'): basestring,
121
- })]
122
-
123
- _GCLIENT_SCHEMA = schema.Schema(_NodeDictSchema({
124
- # List of host names from which dependencies are allowed (whitelist).
125
- # NOTE: when not present, all hosts are allowed.
126
- # NOTE: scoped to current DEPS file, not recursive.
127
- schema.Optional('allowed_hosts'): [schema.Optional(basestring)],
128
-
129
- # Mapping from paths to repo and revision to check out under that path.
130
- # Applying this mapping to the on-disk checkout is the main purpose
131
- # of gclient, and also why the config file is called DEPS.
132
- #
133
- # The following functions are allowed:
134
- #
135
- # Var(): allows variable substitution (either from 'vars' dict below,
136
- # or command-line override)
137
- schema.Optional('deps'): _GCLIENT_DEPS_SCHEMA,
138
-
139
- # Similar to 'deps' (see above) - also keyed by OS (e.g. 'linux').
140
- # Also see 'target_os'.
141
- schema.Optional('deps_os'): _NodeDictSchema({
142
- schema.Optional(basestring): _GCLIENT_DEPS_SCHEMA,
143
- }),
144
-
145
- # Dependency to get gclient_gn_args* settings from. This allows these values
146
- # to be set in a recursedeps file, rather than requiring that they exist in
147
- # the top-level solution.
148
- schema.Optional('gclient_gn_args_from'): basestring,
149
-
150
- # Path to GN args file to write selected variables.
151
- schema.Optional('gclient_gn_args_file'): basestring,
152
-
153
- # Subset of variables to write to the GN args file (see above).
154
- schema.Optional('gclient_gn_args'): [schema.Optional(basestring)],
155
-
156
- # Hooks executed after gclient sync (unless suppressed), or explicitly
157
- # on gclient hooks. See _GCLIENT_HOOKS_SCHEMA for details.
158
- # Also see 'pre_deps_hooks'.
159
- schema.Optional('hooks'): _GCLIENT_HOOKS_SCHEMA,
160
-
161
- # Similar to 'hooks', also keyed by OS.
162
- schema.Optional('hooks_os'): _NodeDictSchema({
163
- schema.Optional(basestring): _GCLIENT_HOOKS_SCHEMA
164
- }),
165
-
166
- # Rules which #includes are allowed in the directory.
167
- # Also see 'skip_child_includes' and 'specific_include_rules'.
168
- schema.Optional('include_rules'): [schema.Optional(basestring)],
169
-
170
- # Hooks executed before processing DEPS. See 'hooks' for more details.
171
- schema.Optional('pre_deps_hooks'): _GCLIENT_HOOKS_SCHEMA,
172
-
173
- # Recursion limit for nested DEPS.
174
- schema.Optional('recursion'): int,
175
-
176
- # Whitelists deps for which recursion should be enabled.
177
- schema.Optional('recursedeps'): [
178
- schema.Optional(schema.Or(
179
- basestring,
180
- (basestring, basestring),
181
- [basestring, basestring]
182
- )),
183
- ],
183
+ # Rules which #includes are allowed in the directory.
184
+ # Also see 'skip_child_includes' and 'specific_include_rules'.
185
+ schema.Optional('include_rules'): [schema.Optional(basestring)],
186
+
187
+ # Hooks executed before processing DEPS. See 'hooks' for more details.
188
+ schema.Optional('pre_deps_hooks'): _GCLIENT_HOOKS_SCHEMA,
184
189
 
185
- # Blacklists directories for checking 'include_rules'.
186
- schema.Optional('skip_child_includes'): [schema.Optional(basestring)],
190
+ # Recursion limit for nested DEPS.
191
+ schema.Optional('recursion'): int,
187
192
 
188
- # Mapping from paths to include rules specific for that path.
189
- # See 'include_rules' for more details.
190
- schema.Optional('specific_include_rules'): _NodeDictSchema({
191
- schema.Optional(basestring): [basestring]
192
- }),
193
+ # Whitelists deps for which recursion should be enabled.
194
+ schema.Optional('recursedeps'): [
195
+ schema.Optional(schema.Or(
196
+ basestring,
197
+ (basestring, basestring),
198
+ [basestring, basestring]
199
+ )),
200
+ ],
193
201
 
194
- # List of additional OS names to consider when selecting dependencies
195
- # from deps_os.
196
- schema.Optional('target_os'): [schema.Optional(basestring)],
202
+ # Blacklists directories for checking 'include_rules'.
203
+ schema.Optional('skip_child_includes'): [schema.Optional(basestring)],
197
204
 
198
- # For recursed-upon sub-dependencies, check out their own dependencies
199
- # relative to the paren't path, rather than relative to the .gclient file.
200
- schema.Optional('use_relative_paths'): bool,
205
+ # Mapping from paths to include rules specific for that path.
206
+ # See 'include_rules' for more details.
207
+ schema.Optional('specific_include_rules'): _NodeDictSchema({
208
+ schema.Optional(basestring): [basestring]
209
+ }),
201
210
 
202
- # Variables that can be referenced using Var() - see 'deps'.
203
- schema.Optional('vars'): _NodeDictSchema({
204
- schema.Optional(basestring): schema.Or(basestring, bool),
205
- }),
206
- }))
211
+ # List of additional OS names to consider when selecting dependencies
212
+ # from deps_os.
213
+ schema.Optional('target_os'): [schema.Optional(basestring)],
214
+
215
+ # For recursed-upon sub-dependencies, check out their own dependencies
216
+ # relative to the parent's path, rather than relative to the .gclient
217
+ # file.
218
+ schema.Optional('use_relative_paths'): bool,
219
+
220
+ # For recursed-upon sub-dependencies, run their hooks relative to the
221
+ # parent's path instead of relative to the .gclient file.
222
+ schema.Optional('use_relative_hooks'): bool,
223
+
224
+ # Variables that can be referenced using Var() - see 'deps'.
225
+ schema.Optional('vars'): _NodeDictSchema({
226
+ schema.Optional(basestring): schema.Or(basestring, bool),
227
+ }),
228
+ }))
207
229
 
208
230
 
209
231
  def _gclient_eval(node_or_string, filename='<unknown>', vars_dict=None):
@@ -239,12 +261,16 @@ def _gclient_eval(node_or_string, filename='<unknown>', vars_dict=None):
239
261
  'invalid name %r (file %r, line %s)' % (
240
262
  node.id, filename, getattr(node, 'lineno', '<unknown>')))
241
263
  return _allowed_names[node.id]
264
+ elif not sys.version_info[:2] < (3, 4) and isinstance(
265
+ node, ast.NameConstant): # Since Python 3.4
266
+ return node.value
242
267
  elif isinstance(node, ast.Call):
243
268
  if not isinstance(node.func, ast.Name) or node.func.id != 'Var':
244
269
  raise ValueError(
245
270
  'Var is the only allowed function (file %r, line %s)' % (
246
271
  filename, getattr(node, 'lineno', '<unknown>')))
247
- if node.keywords or node.starargs or node.kwargs or len(node.args) != 1:
272
+ if node.keywords or getattr(node, 'starargs', None) or getattr(
273
+ node, 'kwargs', None) or len(node.args) != 1:
248
274
  raise ValueError(
249
275
  'Var takes exactly one argument (file %r, line %s)' % (
250
276
  filename, getattr(node, 'lineno', '<unknown>')))
@@ -273,7 +299,7 @@ def _gclient_eval(node_or_string, filename='<unknown>', vars_dict=None):
273
299
  return _convert(node_or_string)
274
300
 
275
301
 
276
- def Exec(content, filename='<unknown>', vars_override=None):
302
+ def Exec(content, filename='<unknown>', vars_override=None, builtin_vars=None):
277
303
  """Safely execs a set of assignments."""
278
304
  def _validate_statement(node, local_scope):
279
305
  if not isinstance(node, ast.Assign):
@@ -314,11 +340,19 @@ def Exec(content, filename='<unknown>', vars_override=None):
314
340
  _validate_statement(statement, statements)
315
341
  statements[statement.targets[0].id] = statement.value
316
342
 
343
+ # The tokenized representation needs to end with a newline token, otherwise
344
+ # untokenization will trigger an assert later on.
345
+ # In Python 2.7 on Windows we need to ensure the input ends with a newline
346
+ # for a newline token to be generated.
347
+ # In other cases a newline token is always generated during tokenization so
348
+ # this has no effect.
349
+ # TODO: Remove this workaround after migrating to Python 3.
350
+ content += '\n'
317
351
  tokens = {
318
- token[2]: list(token)
319
- for token in tokenize.generate_tokens(
320
- cStringIO.StringIO(content).readline)
352
+ token[2]: list(token) for token in tokenize.generate_tokens(
353
+ StringIO(content).readline)
321
354
  }
355
+
322
356
  local_scope = _NodeDict({}, tokens)
323
357
 
324
358
  # Process vars first, so we can expand variables in the rest of the DEPS file.
@@ -330,20 +364,22 @@ def Exec(content, filename='<unknown>', vars_override=None):
330
364
  # Update the parsed vars with the overrides, but only if they are already
331
365
  # present (overrides do not introduce new variables).
332
366
  vars_dict.update(value)
333
- if vars_override:
334
- vars_dict.update({
335
- k: v
336
- for k, v in vars_override.iteritems()
337
- if k in vars_dict})
338
367
 
339
- for name, node in statements.iteritems():
368
+ if builtin_vars:
369
+ vars_dict.update(builtin_vars)
370
+
371
+ if vars_override:
372
+ vars_dict.update({k: v for k, v in vars_override.items() if k in vars_dict})
373
+
374
+ for name, node in statements.items():
340
375
  value = _gclient_eval(node, filename, vars_dict)
341
376
  local_scope.SetNode(name, value, node)
342
377
 
343
378
  return _GCLIENT_SCHEMA.validate(local_scope)
344
379
 
345
380
 
346
- def ExecLegacy(content, filename='<unknown>', vars_override=None):
381
+ def ExecLegacy(content, filename='<unknown>', vars_override=None,
382
+ builtin_vars=None):
347
383
  """Executes a DEPS file |content| using exec."""
348
384
  local_scope = {}
349
385
  global_scope = {'Var': lambda var_name: '{%s}' % var_name}
@@ -354,26 +390,21 @@ def ExecLegacy(content, filename='<unknown>', vars_override=None):
354
390
  # as "exec a in b, c" (See https://bugs.python.org/issue21591).
355
391
  eval(compile(content, filename, 'exec'), global_scope, local_scope)
356
392
 
357
- if 'vars' not in local_scope:
358
- return local_scope
359
-
360
393
  vars_dict = {}
361
- vars_dict.update(local_scope['vars'])
394
+ vars_dict.update(local_scope.get('vars', {}))
395
+ if builtin_vars:
396
+ vars_dict.update(builtin_vars)
362
397
  if vars_override:
363
- vars_dict.update({
364
- k: v
365
- for k, v in vars_override.iteritems()
366
- if k in vars_dict
367
- })
398
+ vars_dict.update({k: v for k, v in vars_override.items() if k in vars_dict})
399
+
400
+ if not vars_dict:
401
+ return local_scope
368
402
 
369
403
  def _DeepFormat(node):
370
404
  if isinstance(node, basestring):
371
405
  return node.format(**vars_dict)
372
406
  elif isinstance(node, dict):
373
- return {
374
- k.format(**vars_dict): _DeepFormat(v)
375
- for k, v in node.iteritems()
376
- }
407
+ return {k.format(**vars_dict): _DeepFormat(v) for k, v in node.items()}
377
408
  elif isinstance(node, list):
378
409
  return [_DeepFormat(elem) for elem in node]
379
410
  elif isinstance(node, tuple):
@@ -449,7 +480,8 @@ def UpdateCondition(info_dict, op, new_condition):
449
480
  del info_dict['condition']
450
481
 
451
482
 
452
- def Parse(content, validate_syntax, filename, vars_override=None):
483
+ def Parse(content, validate_syntax, filename, vars_override=None,
484
+ builtin_vars=None):
453
485
  """Parses DEPS strings.
454
486
 
455
487
  Executes the Python-like string stored in content, resulting in a Python
@@ -464,15 +496,17 @@ def Parse(content, validate_syntax, filename, vars_override=None):
464
496
  of the content, e.g. '<string>', '<unknown>'.
465
497
  vars_override: dict, optional. A dictionary with overrides for the variables
466
498
  defined by the DEPS file.
499
+ builtin_vars: dict, optional. A dictionary with variables that are provided
500
+ by default.
467
501
 
468
502
  Returns:
469
503
  A Python dict with the parsed contents of the DEPS file, as specified by the
470
504
  schema above.
471
505
  """
472
506
  if validate_syntax:
473
- result = Exec(content, filename, vars_override)
507
+ result = Exec(content, filename, vars_override, builtin_vars)
474
508
  else:
475
- result = ExecLegacy(content, filename, vars_override)
509
+ result = ExecLegacy(content, filename, vars_override, builtin_vars)
476
510
 
477
511
  vars_dict = result.get('vars', {})
478
512
  if 'deps' in result:
@@ -597,12 +631,18 @@ def EvaluateCondition(condition, variables, referenced_variables=None):
597
631
 
598
632
  def RenderDEPSFile(gclient_dict):
599
633
  contents = sorted(gclient_dict.tokens.values(), key=lambda token: token[2])
600
- return tokenize.untokenize(contents)
634
+ # The last token is a newline, which we ensure in Exec() for compatibility.
635
+ # However tests pass in inputs not ending with a newline and expect the same
636
+ # back, so for backwards compatibility need to remove that newline character.
637
+ # TODO: Fix tests to expect the newline
638
+ return tokenize.untokenize(contents)[:-1]
601
639
 
602
640
 
603
641
  def _UpdateAstString(tokens, node, value):
604
642
  position = node.lineno, node.col_offset
605
- quote_char = tokens[position][1][0]
643
+ quote_char = ''
644
+ if isinstance(node, ast.Str):
645
+ quote_char = tokens[position][1][0]
606
646
  tokens[position][1] = quote_char + value + quote_char
607
647
  node.s = value
608
648
 
@@ -660,8 +700,7 @@ def AddVar(gclient_dict, var_name, value):
660
700
  vars_node.values.insert(0, value_node)
661
701
 
662
702
  # Update the tokens.
663
- var_tokens = list(tokenize.generate_tokens(
664
- cStringIO.StringIO(var_content).readline))
703
+ var_tokens = list(tokenize.generate_tokens(StringIO(var_content).readline))
665
704
  var_tokens = {
666
705
  token[2]: list(token)
667
706
  # Ignore the tokens corresponding to braces and new lines.
@@ -696,6 +735,15 @@ def SetVar(gclient_dict, var_name, value):
696
735
  gclient_dict['vars'].SetNode(var_name, value, node)
697
736
 
698
737
 
738
+ def _GetVarName(node):
739
+ if isinstance(node, ast.Call):
740
+ return node.args[0].s
741
+ elif node.s.endswith('}'):
742
+ last_brace = node.s.rfind('{')
743
+ return node.s[last_brace+1:-1]
744
+ return None
745
+
746
+
699
747
  def SetCIPD(gclient_dict, dep_name, package_name, new_version):
700
748
  if not isinstance(gclient_dict, _NodeDict) or gclient_dict.tokens is None:
701
749
  raise ValueError(
@@ -725,20 +773,20 @@ def SetCIPD(gclient_dict, dep_name, package_name, new_version):
725
773
  "The deps entry for %s:%s has no formatting information." %
726
774
  (dep_name, package_name))
727
775
 
728
- new_version = 'version:' + new_version
729
- _UpdateAstString(tokens, node, new_version)
730
- packages[0].SetNode('version', new_version, node)
776
+ if not isinstance(node, ast.Call) and not isinstance(node, ast.Str):
777
+ raise ValueError(
778
+ "Unsupported dependency revision format. Please file a bug to the "
779
+ "Infra>SDK component in crbug.com")
731
780
 
781
+ var_name = _GetVarName(node)
782
+ if var_name is not None:
783
+ SetVar(gclient_dict, var_name, new_version)
784
+ else:
785
+ _UpdateAstString(tokens, node, new_version)
786
+ packages[0].SetNode('version', new_version, node)
732
787
 
733
- def SetRevision(gclient_dict, dep_name, new_revision):
734
- def _GetVarName(node):
735
- if isinstance(node, ast.Call):
736
- return node.args[0].s
737
- elif node.s.endswith('}'):
738
- last_brace = node.s.rfind('{')
739
- return node.s[last_brace+1:-1]
740
- return None
741
788
 
789
+ def SetRevision(gclient_dict, dep_name, new_revision):
742
790
  def _UpdateRevision(dep_dict, dep_key, new_revision):
743
791
  dep_node = dep_dict.GetNode(dep_key)
744
792
  if dep_node is None:
@@ -751,7 +799,8 @@ def SetRevision(gclient_dict, dep_name, new_revision):
751
799
 
752
800
  if not isinstance(node, ast.Call) and not isinstance(node, ast.Str):
753
801
  raise ValueError(
754
- "Unsupported dependency revision format. Please file a bug.")
802
+ "Unsupported dependency revision format. Please file a bug to the "
803
+ "Infra>SDK component in crbug.com")
755
804
 
756
805
  var_name = _GetVarName(node)
757
806
  if var_name is not None:
@@ -808,7 +857,7 @@ def GetCIPD(gclient_dict, dep_name, package_name):
808
857
  "There must be exactly one package with the given name (%s), "
809
858
  "%s were found." % (package_name, len(packages)))
810
859
 
811
- return packages[0]['version'][len('version:'):]
860
+ return packages[0]['version']
812
861
 
813
862
 
814
863
  def GetRevision(gclient_dict, dep_name):