libv8 7.3.492.27.1 → 8.4.255.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,185 +0,0 @@
1
- # Protocol Buffers - Google's data interchange format
2
- # Copyright 2008 Google Inc. All rights reserved.
3
- # http://code.google.com/p/protobuf/
4
- #
5
- # Redistribution and use in source and binary forms, with or without
6
- # modification, are permitted provided that the following conditions are
7
- # met:
8
- #
9
- # * Redistributions of source code must retain the above copyright
10
- # notice, this list of conditions and the following disclaimer.
11
- # * Redistributions in binary form must reproduce the above
12
- # copyright notice, this list of conditions and the following disclaimer
13
- # in the documentation and/or other materials provided with the
14
- # distribution.
15
- # * Neither the name of Google Inc. nor the names of its
16
- # contributors may be used to endorse or promote products derived from
17
- # this software without specific prior written permission.
18
- #
19
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
- # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
- # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
- # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
- # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
- # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
- # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
- # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
-
31
- """A database of Python protocol buffer generated symbols.
32
-
33
- SymbolDatabase makes it easy to create new instances of a registered type, given
34
- only the type's protocol buffer symbol name. Once all symbols are registered,
35
- they can be accessed using either the MessageFactory interface which
36
- SymbolDatabase exposes, or the DescriptorPool interface of the underlying
37
- pool.
38
-
39
- Example usage:
40
-
41
- db = symbol_database.SymbolDatabase()
42
-
43
- # Register symbols of interest, from one or multiple files.
44
- db.RegisterFileDescriptor(my_proto_pb2.DESCRIPTOR)
45
- db.RegisterMessage(my_proto_pb2.MyMessage)
46
- db.RegisterEnumDescriptor(my_proto_pb2.MyEnum.DESCRIPTOR)
47
-
48
- # The database can be used as a MessageFactory, to generate types based on
49
- # their name:
50
- types = db.GetMessages(['my_proto.proto'])
51
- my_message_instance = types['MyMessage']()
52
-
53
- # The database's underlying descriptor pool can be queried, so it's not
54
- # necessary to know a type's filename to be able to generate it:
55
- filename = db.pool.FindFileContainingSymbol('MyMessage')
56
- my_message_instance = db.GetMessages([filename])['MyMessage']()
57
-
58
- # This functionality is also provided directly via a convenience method:
59
- my_message_instance = db.GetSymbol('MyMessage')()
60
- """
61
-
62
-
63
- from protobuf26 import descriptor_pool
64
-
65
-
66
- class SymbolDatabase(object):
67
- """A database of Python generated symbols.
68
-
69
- SymbolDatabase also models message_factory.MessageFactory.
70
-
71
- The symbol database can be used to keep a global registry of all protocol
72
- buffer types used within a program.
73
- """
74
-
75
- def __init__(self):
76
- """Constructor."""
77
-
78
- self._symbols = {}
79
- self._symbols_by_file = {}
80
- self.pool = descriptor_pool.DescriptorPool()
81
-
82
- def RegisterMessage(self, message):
83
- """Registers the given message type in the local database.
84
-
85
- Args:
86
- message: a message.Message, to be registered.
87
-
88
- Returns:
89
- The provided message.
90
- """
91
-
92
- desc = message.DESCRIPTOR
93
- self._symbols[desc.full_name] = message
94
- if desc.file.name not in self._symbols_by_file:
95
- self._symbols_by_file[desc.file.name] = {}
96
- self._symbols_by_file[desc.file.name][desc.full_name] = message
97
- self.pool.AddDescriptor(desc)
98
- return message
99
-
100
- def RegisterEnumDescriptor(self, enum_descriptor):
101
- """Registers the given enum descriptor in the local database.
102
-
103
- Args:
104
- enum_descriptor: a descriptor.EnumDescriptor.
105
-
106
- Returns:
107
- The provided descriptor.
108
- """
109
- self.pool.AddEnumDescriptor(enum_descriptor)
110
- return enum_descriptor
111
-
112
- def RegisterFileDescriptor(self, file_descriptor):
113
- """Registers the given file descriptor in the local database.
114
-
115
- Args:
116
- file_descriptor: a descriptor.FileDescriptor.
117
-
118
- Returns:
119
- The provided descriptor.
120
- """
121
- self.pool.AddFileDescriptor(file_descriptor)
122
-
123
- def GetSymbol(self, symbol):
124
- """Tries to find a symbol in the local database.
125
-
126
- Currently, this method only returns message.Message instances, however, if
127
- may be extended in future to support other symbol types.
128
-
129
- Args:
130
- symbol: A str, a protocol buffer symbol.
131
-
132
- Returns:
133
- A Python class corresponding to the symbol.
134
-
135
- Raises:
136
- KeyError: if the symbol could not be found.
137
- """
138
-
139
- return self._symbols[symbol]
140
-
141
- def GetPrototype(self, descriptor):
142
- """Builds a proto2 message class based on the passed in descriptor.
143
-
144
- Passing a descriptor with a fully qualified name matching a previous
145
- invocation will cause the same class to be returned.
146
-
147
- Args:
148
- descriptor: The descriptor to build from.
149
-
150
- Returns:
151
- A class describing the passed in descriptor.
152
- """
153
-
154
- return self.GetSymbol(descriptor.full_name)
155
-
156
- def GetMessages(self, files):
157
- """Gets all the messages from a specified file.
158
-
159
- This will find and resolve dependencies, failing if they are not registered
160
- in the symbol database.
161
-
162
-
163
- Args:
164
- files: The file names to extract messages from.
165
-
166
- Returns:
167
- A dictionary mapping proto names to the message classes. This will include
168
- any dependent messages as well as any messages defined in the same file as
169
- a specified message.
170
-
171
- Raises:
172
- KeyError: if a file could not be found.
173
- """
174
-
175
- result = {}
176
- for f in files:
177
- result.update(self._symbols_by_file[f])
178
- return result
179
-
180
- _DEFAULT = SymbolDatabase()
181
-
182
-
183
- def Default():
184
- """Returns the default SymbolDatabase."""
185
- return _DEFAULT
@@ -1,110 +0,0 @@
1
- # Protocol Buffers - Google's data interchange format
2
- # Copyright 2008 Google Inc. All rights reserved.
3
- # http://code.google.com/p/protobuf/
4
- #
5
- # Redistribution and use in source and binary forms, with or without
6
- # modification, are permitted provided that the following conditions are
7
- # met:
8
- #
9
- # * Redistributions of source code must retain the above copyright
10
- # notice, this list of conditions and the following disclaimer.
11
- # * Redistributions in binary form must reproduce the above
12
- # copyright notice, this list of conditions and the following disclaimer
13
- # in the documentation and/or other materials provided with the
14
- # distribution.
15
- # * Neither the name of Google Inc. nor the names of its
16
- # contributors may be used to endorse or promote products derived from
17
- # this software without specific prior written permission.
18
- #
19
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
- # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
- # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
- # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
- # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
- # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
- # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
- # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
-
31
- #PY25 compatible for GAE.
32
- #
33
- """Encoding related utilities."""
34
-
35
- import re
36
- import sys ##PY25
37
-
38
- # Lookup table for utf8
39
- _cescape_utf8_to_str = [chr(i) for i in xrange(0, 256)]
40
- _cescape_utf8_to_str[9] = r'\t' # optional escape
41
- _cescape_utf8_to_str[10] = r'\n' # optional escape
42
- _cescape_utf8_to_str[13] = r'\r' # optional escape
43
- _cescape_utf8_to_str[39] = r"\'" # optional escape
44
-
45
- _cescape_utf8_to_str[34] = r'\"' # necessary escape
46
- _cescape_utf8_to_str[92] = r'\\' # necessary escape
47
-
48
- # Lookup table for non-utf8, with necessary escapes at (o >= 127 or o < 32)
49
- _cescape_byte_to_str = ([r'\%03o' % i for i in xrange(0, 32)] +
50
- [chr(i) for i in xrange(32, 127)] +
51
- [r'\%03o' % i for i in xrange(127, 256)])
52
- _cescape_byte_to_str[9] = r'\t' # optional escape
53
- _cescape_byte_to_str[10] = r'\n' # optional escape
54
- _cescape_byte_to_str[13] = r'\r' # optional escape
55
- _cescape_byte_to_str[39] = r"\'" # optional escape
56
-
57
- _cescape_byte_to_str[34] = r'\"' # necessary escape
58
- _cescape_byte_to_str[92] = r'\\' # necessary escape
59
-
60
-
61
- def CEscape(text, as_utf8):
62
- """Escape a bytes string for use in an ascii protocol buffer.
63
-
64
- text.encode('string_escape') does not seem to satisfy our needs as it
65
- encodes unprintable characters using two-digit hex escapes whereas our
66
- C++ unescaping function allows hex escapes to be any length. So,
67
- "\0011".encode('string_escape') ends up being "\\x011", which will be
68
- decoded in C++ as a single-character string with char code 0x11.
69
-
70
- Args:
71
- text: A byte string to be escaped
72
- as_utf8: Specifies if result should be returned in UTF-8 encoding
73
- Returns:
74
- Escaped string
75
- """
76
- # PY3 hack: make Ord work for str and bytes:
77
- # //platforms/networking/data uses unicode here, hence basestring.
78
- Ord = ord if isinstance(text, basestring) else lambda x: x
79
- if as_utf8:
80
- return ''.join(_cescape_utf8_to_str[Ord(c)] for c in text)
81
- return ''.join(_cescape_byte_to_str[Ord(c)] for c in text)
82
-
83
-
84
- _CUNESCAPE_HEX = re.compile(r'(\\+)x([0-9a-fA-F])(?![0-9a-fA-F])')
85
- _cescape_highbit_to_str = ([chr(i) for i in range(0, 127)] +
86
- [r'\%03o' % i for i in range(127, 256)])
87
-
88
-
89
- def CUnescape(text):
90
- """Unescape a text string with C-style escape sequences to UTF-8 bytes."""
91
-
92
- def ReplaceHex(m):
93
- # Only replace the match if the number of leading back slashes is odd. i.e.
94
- # the slash itself is not escaped.
95
- if len(m.group(1)) & 1:
96
- return m.group(1) + 'x0' + m.group(2)
97
- return m.group(0)
98
-
99
- # This is required because the 'string_escape' encoding doesn't
100
- # allow single-digit hex escapes (like '\xf').
101
- result = _CUNESCAPE_HEX.sub(ReplaceHex, text)
102
-
103
- if sys.version_info[0] < 3: ##PY25
104
- ##!PY25 if str is bytes: # PY2
105
- return result.decode('string_escape')
106
- result = ''.join(_cescape_highbit_to_str[ord(c)] for c in result)
107
- return (result.encode('ascii') # Make it bytes to allow decode.
108
- .decode('unicode_escape')
109
- # Make it bytes again to return the proper type.
110
- .encode('raw_unicode_escape'))
@@ -1,873 +0,0 @@
1
- # Protocol Buffers - Google's data interchange format
2
- # Copyright 2008 Google Inc. All rights reserved.
3
- # http://code.google.com/p/protobuf/
4
- #
5
- # Redistribution and use in source and binary forms, with or without
6
- # modification, are permitted provided that the following conditions are
7
- # met:
8
- #
9
- # * Redistributions of source code must retain the above copyright
10
- # notice, this list of conditions and the following disclaimer.
11
- # * Redistributions in binary form must reproduce the above
12
- # copyright notice, this list of conditions and the following disclaimer
13
- # in the documentation and/or other materials provided with the
14
- # distribution.
15
- # * Neither the name of Google Inc. nor the names of its
16
- # contributors may be used to endorse or promote products derived from
17
- # this software without specific prior written permission.
18
- #
19
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
- # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
- # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
- # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
- # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
- # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
- # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
- # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
-
31
- #PY25 compatible for GAE.
32
- #
33
- # Copyright 2007 Google Inc. All Rights Reserved.
34
-
35
- """Contains routines for printing protocol messages in text format."""
36
-
37
- __author__ = 'kenton@google.com (Kenton Varda)'
38
-
39
- import cStringIO
40
- import re
41
-
42
- from protobuf26.internal import type_checkers
43
- from protobuf26 import descriptor
44
- from protobuf26 import text_encoding
45
-
46
- __all__ = ['MessageToString', 'PrintMessage', 'PrintField',
47
- 'PrintFieldValue', 'Merge']
48
-
49
-
50
- _INTEGER_CHECKERS = (type_checkers.Uint32ValueChecker(),
51
- type_checkers.Int32ValueChecker(),
52
- type_checkers.Uint64ValueChecker(),
53
- type_checkers.Int64ValueChecker())
54
- _FLOAT_INFINITY = re.compile('-?inf(?:inity)?f?', re.IGNORECASE)
55
- _FLOAT_NAN = re.compile('nanf?', re.IGNORECASE)
56
- _FLOAT_TYPES = frozenset([descriptor.FieldDescriptor.CPPTYPE_FLOAT,
57
- descriptor.FieldDescriptor.CPPTYPE_DOUBLE])
58
-
59
-
60
- class Error(Exception):
61
- """Top-level module error for text_format."""
62
-
63
-
64
- class ParseError(Error):
65
- """Thrown in case of ASCII parsing error."""
66
-
67
-
68
- def MessageToString(message, as_utf8=False, as_one_line=False,
69
- pointy_brackets=False, use_index_order=False,
70
- float_format=None):
71
- """Convert protobuf message to text format.
72
-
73
- Floating point values can be formatted compactly with 15 digits of
74
- precision (which is the most that IEEE 754 "double" can guarantee)
75
- using float_format='.15g'.
76
-
77
- Args:
78
- message: The protocol buffers message.
79
- as_utf8: Produce text output in UTF8 format.
80
- as_one_line: Don't introduce newlines between fields.
81
- pointy_brackets: If True, use angle brackets instead of curly braces for
82
- nesting.
83
- use_index_order: If True, print fields of a proto message using the order
84
- defined in source code instead of the field number. By default, use the
85
- field number order.
86
- float_format: If set, use this to specify floating point number formatting
87
- (per the "Format Specification Mini-Language"); otherwise, str() is used.
88
-
89
- Returns:
90
- A string of the text formatted protocol buffer message.
91
- """
92
- out = cStringIO.StringIO()
93
- PrintMessage(message, out, as_utf8=as_utf8, as_one_line=as_one_line,
94
- pointy_brackets=pointy_brackets,
95
- use_index_order=use_index_order,
96
- float_format=float_format)
97
- result = out.getvalue()
98
- out.close()
99
- if as_one_line:
100
- return result.rstrip()
101
- return result
102
-
103
-
104
- def PrintMessage(message, out, indent=0, as_utf8=False, as_one_line=False,
105
- pointy_brackets=False, use_index_order=False,
106
- float_format=None):
107
- fields = message.ListFields()
108
- if use_index_order:
109
- fields.sort(key=lambda x: x[0].index)
110
- for field, value in fields:
111
- if field.label == descriptor.FieldDescriptor.LABEL_REPEATED:
112
- for element in value:
113
- PrintField(field, element, out, indent, as_utf8, as_one_line,
114
- pointy_brackets=pointy_brackets,
115
- float_format=float_format)
116
- else:
117
- PrintField(field, value, out, indent, as_utf8, as_one_line,
118
- pointy_brackets=pointy_brackets,
119
- float_format=float_format)
120
-
121
-
122
- def PrintField(field, value, out, indent=0, as_utf8=False, as_one_line=False,
123
- pointy_brackets=False, float_format=None):
124
- """Print a single field name/value pair. For repeated fields, the value
125
- should be a single element."""
126
-
127
- out.write(' ' * indent)
128
- if field.is_extension:
129
- out.write('[')
130
- if (field.containing_type.GetOptions().message_set_wire_format and
131
- field.type == descriptor.FieldDescriptor.TYPE_MESSAGE and
132
- field.message_type == field.extension_scope and
133
- field.label == descriptor.FieldDescriptor.LABEL_OPTIONAL):
134
- out.write(field.message_type.full_name)
135
- else:
136
- out.write(field.full_name)
137
- out.write(']')
138
- elif field.type == descriptor.FieldDescriptor.TYPE_GROUP:
139
- # For groups, use the capitalized name.
140
- out.write(field.message_type.name)
141
- else:
142
- out.write(field.name)
143
-
144
- if field.cpp_type != descriptor.FieldDescriptor.CPPTYPE_MESSAGE:
145
- # The colon is optional in this case, but our cross-language golden files
146
- # don't include it.
147
- out.write(': ')
148
-
149
- PrintFieldValue(field, value, out, indent, as_utf8, as_one_line,
150
- pointy_brackets=pointy_brackets,
151
- float_format=float_format)
152
- if as_one_line:
153
- out.write(' ')
154
- else:
155
- out.write('\n')
156
-
157
-
158
- def PrintFieldValue(field, value, out, indent=0, as_utf8=False,
159
- as_one_line=False, pointy_brackets=False,
160
- float_format=None):
161
- """Print a single field value (not including name). For repeated fields,
162
- the value should be a single element."""
163
-
164
- if pointy_brackets:
165
- openb = '<'
166
- closeb = '>'
167
- else:
168
- openb = '{'
169
- closeb = '}'
170
-
171
- if field.cpp_type == descriptor.FieldDescriptor.CPPTYPE_MESSAGE:
172
- if as_one_line:
173
- out.write(' %s ' % openb)
174
- PrintMessage(value, out, indent, as_utf8, as_one_line,
175
- pointy_brackets=pointy_brackets,
176
- float_format=float_format)
177
- out.write(closeb)
178
- else:
179
- out.write(' %s\n' % openb)
180
- PrintMessage(value, out, indent + 2, as_utf8, as_one_line,
181
- pointy_brackets=pointy_brackets,
182
- float_format=float_format)
183
- out.write(' ' * indent + closeb)
184
- elif field.cpp_type == descriptor.FieldDescriptor.CPPTYPE_ENUM:
185
- enum_value = field.enum_type.values_by_number.get(value, None)
186
- if enum_value is not None:
187
- out.write(enum_value.name)
188
- else:
189
- out.write(str(value))
190
- elif field.cpp_type == descriptor.FieldDescriptor.CPPTYPE_STRING:
191
- out.write('\"')
192
- if isinstance(value, unicode):
193
- out_value = value.encode('utf-8')
194
- else:
195
- out_value = value
196
- if field.type == descriptor.FieldDescriptor.TYPE_BYTES:
197
- # We need to escape non-UTF8 chars in TYPE_BYTES field.
198
- out_as_utf8 = False
199
- else:
200
- out_as_utf8 = as_utf8
201
- out.write(text_encoding.CEscape(out_value, out_as_utf8))
202
- out.write('\"')
203
- elif field.cpp_type == descriptor.FieldDescriptor.CPPTYPE_BOOL:
204
- if value:
205
- out.write('true')
206
- else:
207
- out.write('false')
208
- elif field.cpp_type in _FLOAT_TYPES and float_format is not None:
209
- out.write('{1:{0}}'.format(float_format, value))
210
- else:
211
- out.write(str(value))
212
-
213
-
214
- def _ParseOrMerge(lines, message, allow_multiple_scalars):
215
- """Converts an ASCII representation of a protocol message into a message.
216
-
217
- Args:
218
- lines: Lines of a message's ASCII representation.
219
- message: A protocol buffer message to merge into.
220
- allow_multiple_scalars: Determines if repeated values for a non-repeated
221
- field are permitted, e.g., the string "foo: 1 foo: 2" for a
222
- required/optional field named "foo".
223
-
224
- Raises:
225
- ParseError: On ASCII parsing problems.
226
- """
227
- tokenizer = _Tokenizer(lines)
228
- while not tokenizer.AtEnd():
229
- _MergeField(tokenizer, message, allow_multiple_scalars)
230
-
231
-
232
- def Parse(text, message):
233
- """Parses an ASCII representation of a protocol message into a message.
234
-
235
- Args:
236
- text: Message ASCII representation.
237
- message: A protocol buffer message to merge into.
238
-
239
- Returns:
240
- The same message passed as argument.
241
-
242
- Raises:
243
- ParseError: On ASCII parsing problems.
244
- """
245
- if not isinstance(text, str): text = text.decode('utf-8')
246
- return ParseLines(text.split('\n'), message)
247
-
248
-
249
- def Merge(text, message):
250
- """Parses an ASCII representation of a protocol message into a message.
251
-
252
- Like Parse(), but allows repeated values for a non-repeated field, and uses
253
- the last one.
254
-
255
- Args:
256
- text: Message ASCII representation.
257
- message: A protocol buffer message to merge into.
258
-
259
- Returns:
260
- The same message passed as argument.
261
-
262
- Raises:
263
- ParseError: On ASCII parsing problems.
264
- """
265
- return MergeLines(text.split('\n'), message)
266
-
267
-
268
- def ParseLines(lines, message):
269
- """Parses an ASCII representation of a protocol message into a message.
270
-
271
- Args:
272
- lines: An iterable of lines of a message's ASCII representation.
273
- message: A protocol buffer message to merge into.
274
-
275
- Returns:
276
- The same message passed as argument.
277
-
278
- Raises:
279
- ParseError: On ASCII parsing problems.
280
- """
281
- _ParseOrMerge(lines, message, False)
282
- return message
283
-
284
-
285
- def MergeLines(lines, message):
286
- """Parses an ASCII representation of a protocol message into a message.
287
-
288
- Args:
289
- lines: An iterable of lines of a message's ASCII representation.
290
- message: A protocol buffer message to merge into.
291
-
292
- Returns:
293
- The same message passed as argument.
294
-
295
- Raises:
296
- ParseError: On ASCII parsing problems.
297
- """
298
- _ParseOrMerge(lines, message, True)
299
- return message
300
-
301
-
302
- def _MergeField(tokenizer, message, allow_multiple_scalars):
303
- """Merges a single protocol message field into a message.
304
-
305
- Args:
306
- tokenizer: A tokenizer to parse the field name and values.
307
- message: A protocol message to record the data.
308
- allow_multiple_scalars: Determines if repeated values for a non-repeated
309
- field are permitted, e.g., the string "foo: 1 foo: 2" for a
310
- required/optional field named "foo".
311
-
312
- Raises:
313
- ParseError: In case of ASCII parsing problems.
314
- """
315
- message_descriptor = message.DESCRIPTOR
316
- if tokenizer.TryConsume('['):
317
- name = [tokenizer.ConsumeIdentifier()]
318
- while tokenizer.TryConsume('.'):
319
- name.append(tokenizer.ConsumeIdentifier())
320
- name = '.'.join(name)
321
-
322
- if not message_descriptor.is_extendable:
323
- raise tokenizer.ParseErrorPreviousToken(
324
- 'Message type "%s" does not have extensions.' %
325
- message_descriptor.full_name)
326
- # pylint: disable=protected-access
327
- field = message.Extensions._FindExtensionByName(name)
328
- # pylint: enable=protected-access
329
- if not field:
330
- raise tokenizer.ParseErrorPreviousToken(
331
- 'Extension "%s" not registered.' % name)
332
- elif message_descriptor != field.containing_type:
333
- raise tokenizer.ParseErrorPreviousToken(
334
- 'Extension "%s" does not extend message type "%s".' % (
335
- name, message_descriptor.full_name))
336
- tokenizer.Consume(']')
337
- else:
338
- name = tokenizer.ConsumeIdentifier()
339
- field = message_descriptor.fields_by_name.get(name, None)
340
-
341
- # Group names are expected to be capitalized as they appear in the
342
- # .proto file, which actually matches their type names, not their field
343
- # names.
344
- if not field:
345
- field = message_descriptor.fields_by_name.get(name.lower(), None)
346
- if field and field.type != descriptor.FieldDescriptor.TYPE_GROUP:
347
- field = None
348
-
349
- if (field and field.type == descriptor.FieldDescriptor.TYPE_GROUP and
350
- field.message_type.name != name):
351
- field = None
352
-
353
- if not field:
354
- raise tokenizer.ParseErrorPreviousToken(
355
- 'Message type "%s" has no field named "%s".' % (
356
- message_descriptor.full_name, name))
357
-
358
- if field.cpp_type == descriptor.FieldDescriptor.CPPTYPE_MESSAGE:
359
- tokenizer.TryConsume(':')
360
-
361
- if tokenizer.TryConsume('<'):
362
- end_token = '>'
363
- else:
364
- tokenizer.Consume('{')
365
- end_token = '}'
366
-
367
- if field.label == descriptor.FieldDescriptor.LABEL_REPEATED:
368
- if field.is_extension:
369
- sub_message = message.Extensions[field].add()
370
- else:
371
- sub_message = getattr(message, field.name).add()
372
- else:
373
- if field.is_extension:
374
- sub_message = message.Extensions[field]
375
- else:
376
- sub_message = getattr(message, field.name)
377
- sub_message.SetInParent()
378
-
379
- while not tokenizer.TryConsume(end_token):
380
- if tokenizer.AtEnd():
381
- raise tokenizer.ParseErrorPreviousToken('Expected "%s".' % (end_token))
382
- _MergeField(tokenizer, sub_message, allow_multiple_scalars)
383
- else:
384
- _MergeScalarField(tokenizer, message, field, allow_multiple_scalars)
385
-
386
- # For historical reasons, fields may optionally be separated by commas or
387
- # semicolons.
388
- if not tokenizer.TryConsume(','):
389
- tokenizer.TryConsume(';')
390
-
391
-
392
- def _MergeScalarField(tokenizer, message, field, allow_multiple_scalars):
393
- """Merges a single protocol message scalar field into a message.
394
-
395
- Args:
396
- tokenizer: A tokenizer to parse the field value.
397
- message: A protocol message to record the data.
398
- field: The descriptor of the field to be merged.
399
- allow_multiple_scalars: Determines if repeated values for a non-repeated
400
- field are permitted, e.g., the string "foo: 1 foo: 2" for a
401
- required/optional field named "foo".
402
-
403
- Raises:
404
- ParseError: In case of ASCII parsing problems.
405
- RuntimeError: On runtime errors.
406
- """
407
- tokenizer.Consume(':')
408
- value = None
409
-
410
- if field.type in (descriptor.FieldDescriptor.TYPE_INT32,
411
- descriptor.FieldDescriptor.TYPE_SINT32,
412
- descriptor.FieldDescriptor.TYPE_SFIXED32):
413
- value = tokenizer.ConsumeInt32()
414
- elif field.type in (descriptor.FieldDescriptor.TYPE_INT64,
415
- descriptor.FieldDescriptor.TYPE_SINT64,
416
- descriptor.FieldDescriptor.TYPE_SFIXED64):
417
- value = tokenizer.ConsumeInt64()
418
- elif field.type in (descriptor.FieldDescriptor.TYPE_UINT32,
419
- descriptor.FieldDescriptor.TYPE_FIXED32):
420
- value = tokenizer.ConsumeUint32()
421
- elif field.type in (descriptor.FieldDescriptor.TYPE_UINT64,
422
- descriptor.FieldDescriptor.TYPE_FIXED64):
423
- value = tokenizer.ConsumeUint64()
424
- elif field.type in (descriptor.FieldDescriptor.TYPE_FLOAT,
425
- descriptor.FieldDescriptor.TYPE_DOUBLE):
426
- value = tokenizer.ConsumeFloat()
427
- elif field.type == descriptor.FieldDescriptor.TYPE_BOOL:
428
- value = tokenizer.ConsumeBool()
429
- elif field.type == descriptor.FieldDescriptor.TYPE_STRING:
430
- value = tokenizer.ConsumeString()
431
- elif field.type == descriptor.FieldDescriptor.TYPE_BYTES:
432
- value = tokenizer.ConsumeByteString()
433
- elif field.type == descriptor.FieldDescriptor.TYPE_ENUM:
434
- value = tokenizer.ConsumeEnum(field)
435
- else:
436
- raise RuntimeError('Unknown field type %d' % field.type)
437
-
438
- if field.label == descriptor.FieldDescriptor.LABEL_REPEATED:
439
- if field.is_extension:
440
- message.Extensions[field].append(value)
441
- else:
442
- getattr(message, field.name).append(value)
443
- else:
444
- if field.is_extension:
445
- if not allow_multiple_scalars and message.HasExtension(field):
446
- raise tokenizer.ParseErrorPreviousToken(
447
- 'Message type "%s" should not have multiple "%s" extensions.' %
448
- (message.DESCRIPTOR.full_name, field.full_name))
449
- else:
450
- message.Extensions[field] = value
451
- else:
452
- if not allow_multiple_scalars and message.HasField(field.name):
453
- raise tokenizer.ParseErrorPreviousToken(
454
- 'Message type "%s" should not have multiple "%s" fields.' %
455
- (message.DESCRIPTOR.full_name, field.name))
456
- else:
457
- setattr(message, field.name, value)
458
-
459
-
460
- class _Tokenizer(object):
461
- """Protocol buffer ASCII representation tokenizer.
462
-
463
- This class handles the lower level string parsing by splitting it into
464
- meaningful tokens.
465
-
466
- It was directly ported from the Java protocol buffer API.
467
- """
468
-
469
- _WHITESPACE = re.compile('(\\s|(#.*$))+', re.MULTILINE)
470
- _TOKEN = re.compile(
471
- '[a-zA-Z_][0-9a-zA-Z_+-]*|' # an identifier
472
- '[0-9+-][0-9a-zA-Z_.+-]*|' # a number
473
- '\"([^\"\n\\\\]|\\\\.)*(\"|\\\\?$)|' # a double-quoted string
474
- '\'([^\'\n\\\\]|\\\\.)*(\'|\\\\?$)') # a single-quoted string
475
- _IDENTIFIER = re.compile(r'\w+')
476
-
477
- def __init__(self, lines):
478
- self._position = 0
479
- self._line = -1
480
- self._column = 0
481
- self._token_start = None
482
- self.token = ''
483
- self._lines = iter(lines)
484
- self._current_line = ''
485
- self._previous_line = 0
486
- self._previous_column = 0
487
- self._more_lines = True
488
- self._SkipWhitespace()
489
- self.NextToken()
490
-
491
- def AtEnd(self):
492
- """Checks the end of the text was reached.
493
-
494
- Returns:
495
- True iff the end was reached.
496
- """
497
- return not self.token
498
-
499
- def _PopLine(self):
500
- while len(self._current_line) <= self._column:
501
- try:
502
- self._current_line = self._lines.next()
503
- except StopIteration:
504
- self._current_line = ''
505
- self._more_lines = False
506
- return
507
- else:
508
- self._line += 1
509
- self._column = 0
510
-
511
- def _SkipWhitespace(self):
512
- while True:
513
- self._PopLine()
514
- match = self._WHITESPACE.match(self._current_line, self._column)
515
- if not match:
516
- break
517
- length = len(match.group(0))
518
- self._column += length
519
-
520
- def TryConsume(self, token):
521
- """Tries to consume a given piece of text.
522
-
523
- Args:
524
- token: Text to consume.
525
-
526
- Returns:
527
- True iff the text was consumed.
528
- """
529
- if self.token == token:
530
- self.NextToken()
531
- return True
532
- return False
533
-
534
- def Consume(self, token):
535
- """Consumes a piece of text.
536
-
537
- Args:
538
- token: Text to consume.
539
-
540
- Raises:
541
- ParseError: If the text couldn't be consumed.
542
- """
543
- if not self.TryConsume(token):
544
- raise self._ParseError('Expected "%s".' % token)
545
-
546
- def ConsumeIdentifier(self):
547
- """Consumes protocol message field identifier.
548
-
549
- Returns:
550
- Identifier string.
551
-
552
- Raises:
553
- ParseError: If an identifier couldn't be consumed.
554
- """
555
- result = self.token
556
- if not self._IDENTIFIER.match(result):
557
- raise self._ParseError('Expected identifier.')
558
- self.NextToken()
559
- return result
560
-
561
- def ConsumeInt32(self):
562
- """Consumes a signed 32bit integer number.
563
-
564
- Returns:
565
- The integer parsed.
566
-
567
- Raises:
568
- ParseError: If a signed 32bit integer couldn't be consumed.
569
- """
570
- try:
571
- result = ParseInteger(self.token, is_signed=True, is_long=False)
572
- except ValueError, e:
573
- raise self._ParseError(str(e))
574
- self.NextToken()
575
- return result
576
-
577
- def ConsumeUint32(self):
578
- """Consumes an unsigned 32bit integer number.
579
-
580
- Returns:
581
- The integer parsed.
582
-
583
- Raises:
584
- ParseError: If an unsigned 32bit integer couldn't be consumed.
585
- """
586
- try:
587
- result = ParseInteger(self.token, is_signed=False, is_long=False)
588
- except ValueError, e:
589
- raise self._ParseError(str(e))
590
- self.NextToken()
591
- return result
592
-
593
- def ConsumeInt64(self):
594
- """Consumes a signed 64bit integer number.
595
-
596
- Returns:
597
- The integer parsed.
598
-
599
- Raises:
600
- ParseError: If a signed 64bit integer couldn't be consumed.
601
- """
602
- try:
603
- result = ParseInteger(self.token, is_signed=True, is_long=True)
604
- except ValueError, e:
605
- raise self._ParseError(str(e))
606
- self.NextToken()
607
- return result
608
-
609
- def ConsumeUint64(self):
610
- """Consumes an unsigned 64bit integer number.
611
-
612
- Returns:
613
- The integer parsed.
614
-
615
- Raises:
616
- ParseError: If an unsigned 64bit integer couldn't be consumed.
617
- """
618
- try:
619
- result = ParseInteger(self.token, is_signed=False, is_long=True)
620
- except ValueError, e:
621
- raise self._ParseError(str(e))
622
- self.NextToken()
623
- return result
624
-
625
- def ConsumeFloat(self):
626
- """Consumes an floating point number.
627
-
628
- Returns:
629
- The number parsed.
630
-
631
- Raises:
632
- ParseError: If a floating point number couldn't be consumed.
633
- """
634
- try:
635
- result = ParseFloat(self.token)
636
- except ValueError, e:
637
- raise self._ParseError(str(e))
638
- self.NextToken()
639
- return result
640
-
641
- def ConsumeBool(self):
642
- """Consumes a boolean value.
643
-
644
- Returns:
645
- The bool parsed.
646
-
647
- Raises:
648
- ParseError: If a boolean value couldn't be consumed.
649
- """
650
- try:
651
- result = ParseBool(self.token)
652
- except ValueError, e:
653
- raise self._ParseError(str(e))
654
- self.NextToken()
655
- return result
656
-
657
- def ConsumeString(self):
658
- """Consumes a string value.
659
-
660
- Returns:
661
- The string parsed.
662
-
663
- Raises:
664
- ParseError: If a string value couldn't be consumed.
665
- """
666
- the_bytes = self.ConsumeByteString()
667
- try:
668
- return unicode(the_bytes, 'utf-8')
669
- except UnicodeDecodeError, e:
670
- raise self._StringParseError(e)
671
-
672
- def ConsumeByteString(self):
673
- """Consumes a byte array value.
674
-
675
- Returns:
676
- The array parsed (as a string).
677
-
678
- Raises:
679
- ParseError: If a byte array value couldn't be consumed.
680
- """
681
- the_list = [self._ConsumeSingleByteString()]
682
- while self.token and self.token[0] in ('\'', '"'):
683
- the_list.append(self._ConsumeSingleByteString())
684
- return ''.encode('latin1').join(the_list) ##PY25
685
- ##!PY25 return b''.join(the_list)
686
-
687
- def _ConsumeSingleByteString(self):
688
- """Consume one token of a string literal.
689
-
690
- String literals (whether bytes or text) can come in multiple adjacent
691
- tokens which are automatically concatenated, like in C or Python. This
692
- method only consumes one token.
693
- """
694
- text = self.token
695
- if len(text) < 1 or text[0] not in ('\'', '"'):
696
- raise self._ParseError('Expected string.')
697
-
698
- if len(text) < 2 or text[-1] != text[0]:
699
- raise self._ParseError('String missing ending quote.')
700
-
701
- try:
702
- result = text_encoding.CUnescape(text[1:-1])
703
- except ValueError, e:
704
- raise self._ParseError(str(e))
705
- self.NextToken()
706
- return result
707
-
708
- def ConsumeEnum(self, field):
709
- try:
710
- result = ParseEnum(field, self.token)
711
- except ValueError, e:
712
- raise self._ParseError(str(e))
713
- self.NextToken()
714
- return result
715
-
716
- def ParseErrorPreviousToken(self, message):
717
- """Creates and *returns* a ParseError for the previously read token.
718
-
719
- Args:
720
- message: A message to set for the exception.
721
-
722
- Returns:
723
- A ParseError instance.
724
- """
725
- return ParseError('%d:%d : %s' % (
726
- self._previous_line + 1, self._previous_column + 1, message))
727
-
728
- def _ParseError(self, message):
729
- """Creates and *returns* a ParseError for the current token."""
730
- return ParseError('%d:%d : %s' % (
731
- self._line + 1, self._column + 1, message))
732
-
733
- def _StringParseError(self, e):
734
- return self._ParseError('Couldn\'t parse string: ' + str(e))
735
-
736
- def NextToken(self):
737
- """Reads the next meaningful token."""
738
- self._previous_line = self._line
739
- self._previous_column = self._column
740
-
741
- self._column += len(self.token)
742
- self._SkipWhitespace()
743
-
744
- if not self._more_lines:
745
- self.token = ''
746
- return
747
-
748
- match = self._TOKEN.match(self._current_line, self._column)
749
- if match:
750
- token = match.group(0)
751
- self.token = token
752
- else:
753
- self.token = self._current_line[self._column]
754
-
755
-
756
- def ParseInteger(text, is_signed=False, is_long=False):
757
- """Parses an integer.
758
-
759
- Args:
760
- text: The text to parse.
761
- is_signed: True if a signed integer must be parsed.
762
- is_long: True if a long integer must be parsed.
763
-
764
- Returns:
765
- The integer value.
766
-
767
- Raises:
768
- ValueError: Thrown Iff the text is not a valid integer.
769
- """
770
- # Do the actual parsing. Exception handling is propagated to caller.
771
- try:
772
- # We force 32-bit values to int and 64-bit values to long to make
773
- # alternate implementations where the distinction is more significant
774
- # (e.g. the C++ implementation) simpler.
775
- if is_long:
776
- result = long(text, 0)
777
- else:
778
- result = int(text, 0)
779
- except ValueError:
780
- raise ValueError('Couldn\'t parse integer: %s' % text)
781
-
782
- # Check if the integer is sane. Exceptions handled by callers.
783
- checker = _INTEGER_CHECKERS[2 * int(is_long) + int(is_signed)]
784
- checker.CheckValue(result)
785
- return result
786
-
787
-
788
- def ParseFloat(text):
789
- """Parse a floating point number.
790
-
791
- Args:
792
- text: Text to parse.
793
-
794
- Returns:
795
- The number parsed.
796
-
797
- Raises:
798
- ValueError: If a floating point number couldn't be parsed.
799
- """
800
- try:
801
- # Assume Python compatible syntax.
802
- return float(text)
803
- except ValueError:
804
- # Check alternative spellings.
805
- if _FLOAT_INFINITY.match(text):
806
- if text[0] == '-':
807
- return float('-inf')
808
- else:
809
- return float('inf')
810
- elif _FLOAT_NAN.match(text):
811
- return float('nan')
812
- else:
813
- # assume '1.0f' format
814
- try:
815
- return float(text.rstrip('f'))
816
- except ValueError:
817
- raise ValueError('Couldn\'t parse float: %s' % text)
818
-
819
-
820
- def ParseBool(text):
821
- """Parse a boolean value.
822
-
823
- Args:
824
- text: Text to parse.
825
-
826
- Returns:
827
- Boolean values parsed
828
-
829
- Raises:
830
- ValueError: If text is not a valid boolean.
831
- """
832
- if text in ('true', 't', '1'):
833
- return True
834
- elif text in ('false', 'f', '0'):
835
- return False
836
- else:
837
- raise ValueError('Expected "true" or "false".')
838
-
839
-
840
- def ParseEnum(field, value):
841
- """Parse an enum value.
842
-
843
- The value can be specified by a number (the enum value), or by
844
- a string literal (the enum name).
845
-
846
- Args:
847
- field: Enum field descriptor.
848
- value: String value.
849
-
850
- Returns:
851
- Enum value number.
852
-
853
- Raises:
854
- ValueError: If the enum value could not be parsed.
855
- """
856
- enum_descriptor = field.enum_type
857
- try:
858
- number = int(value, 0)
859
- except ValueError:
860
- # Identifier.
861
- enum_value = enum_descriptor.values_by_name.get(value, None)
862
- if enum_value is None:
863
- raise ValueError(
864
- 'Enum type "%s" has no value named %s.' % (
865
- enum_descriptor.full_name, value))
866
- else:
867
- # Numeric value.
868
- enum_value = enum_descriptor.values_by_number.get(number, None)
869
- if enum_value is None:
870
- raise ValueError(
871
- 'Enum type "%s" has no value with number %d.' % (
872
- enum_descriptor.full_name, number))
873
- return enum_value.number