libv8 6.7.288.46.1 → 7.3.492.27.0beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (408) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -0
  3. data/CHANGELOG.md +4 -0
  4. data/README.md +2 -0
  5. data/ext/libv8/builder.rb +6 -2
  6. data/lib/libv8/version.rb +1 -1
  7. data/vendor/depot_tools/.gitattributes +1 -0
  8. data/vendor/depot_tools/.gitignore +7 -0
  9. data/vendor/depot_tools/CROS_OWNERS +5 -0
  10. data/vendor/depot_tools/OWNERS +12 -1
  11. data/vendor/depot_tools/PRESUBMIT.py +16 -9
  12. data/vendor/depot_tools/README.md +9 -2
  13. data/vendor/depot_tools/autoninja +14 -6
  14. data/vendor/depot_tools/autoninja.bat +11 -1
  15. data/vendor/depot_tools/autoninja.py +40 -18
  16. data/vendor/depot_tools/bb +12 -0
  17. data/vendor/depot_tools/bb.bat +7 -0
  18. data/vendor/depot_tools/bootstrap/win/manifest.txt +1 -1
  19. data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +1 -1
  20. data/vendor/depot_tools/bootstrap/win/win_tools.py +2 -1
  21. data/vendor/depot_tools/buildbucket.py +57 -4
  22. data/vendor/depot_tools/cipd +157 -44
  23. data/vendor/depot_tools/cipd.bat +51 -14
  24. data/vendor/depot_tools/cipd.ps1 +104 -42
  25. data/vendor/depot_tools/cipd_client_version +1 -1
  26. data/vendor/depot_tools/cipd_client_version.digests +21 -0
  27. data/vendor/depot_tools/cipd_manifest.txt +19 -6
  28. data/vendor/depot_tools/cipd_manifest.versions +318 -0
  29. data/vendor/depot_tools/clang_format.py +4 -4
  30. data/vendor/depot_tools/cpplint.py +44 -199
  31. data/vendor/depot_tools/dart_format.py +2 -2
  32. data/vendor/depot_tools/detect_host_arch.py +8 -3
  33. data/vendor/depot_tools/download_from_google_storage.py +47 -39
  34. data/vendor/depot_tools/fetch.py +30 -18
  35. data/vendor/depot_tools/fetch_configs/android_internal.py +34 -0
  36. data/vendor/depot_tools/fetch_configs/chromium.py +18 -1
  37. data/vendor/depot_tools/fetch_configs/config_util.py +4 -2
  38. data/vendor/depot_tools/fetch_configs/inspector_protocol.py +40 -0
  39. data/vendor/depot_tools/fetch_configs/node-ci.py +41 -0
  40. data/vendor/depot_tools/fix_encoding.py +3 -3
  41. data/vendor/depot_tools/gclient +1 -1
  42. data/vendor/depot_tools/gclient.py +415 -198
  43. data/vendor/depot_tools/gclient_eval.py +220 -171
  44. data/vendor/depot_tools/gclient_paths.py +142 -0
  45. data/vendor/depot_tools/gclient_scm.py +200 -51
  46. data/vendor/depot_tools/gclient_utils.py +88 -191
  47. data/vendor/depot_tools/gerrit_client.py +13 -0
  48. data/vendor/depot_tools/gerrit_util.py +158 -23
  49. data/vendor/depot_tools/git-nav-upstream +1 -1
  50. data/vendor/depot_tools/git_cache.py +77 -24
  51. data/vendor/depot_tools/git_cl.py +705 -1099
  52. data/vendor/depot_tools/git_common.py +9 -6
  53. data/vendor/depot_tools/git_map_branches.py +19 -2
  54. data/vendor/depot_tools/git_nav_downstream.py +3 -4
  55. data/vendor/depot_tools/git_rebase_update.py +14 -0
  56. data/vendor/depot_tools/git_reparent_branch.py +8 -2
  57. data/vendor/depot_tools/gn.py +38 -3
  58. data/vendor/depot_tools/gsutil.py +8 -3
  59. data/vendor/depot_tools/gsutil.py.bat +15 -0
  60. data/vendor/depot_tools/gsutil.vpython +16 -0
  61. data/vendor/depot_tools/infra/config/OWNERS +0 -1
  62. data/vendor/depot_tools/infra/config/recipes.cfg +3 -2
  63. data/vendor/depot_tools/lucicfg +12 -0
  64. data/vendor/depot_tools/lucicfg.bat +7 -0
  65. data/vendor/depot_tools/man/html/git-map-branches.html +34 -2
  66. data/vendor/depot_tools/man/html/git-new-branch.html +40 -32
  67. data/vendor/depot_tools/man/man1/git-map-branches.1 +24 -5
  68. data/vendor/depot_tools/man/man1/git-new-branch.1 +35 -27
  69. data/vendor/depot_tools/man/src/git-map-branches.demo.1.sh +1 -0
  70. data/vendor/depot_tools/man/src/git-map-branches.txt +10 -0
  71. data/vendor/depot_tools/man/src/git-new-branch.demo.1.sh +9 -4
  72. data/vendor/depot_tools/man/src/git-new-branch.txt +1 -1
  73. data/vendor/depot_tools/metrics.README.md +98 -0
  74. data/vendor/depot_tools/metrics.py +296 -0
  75. data/vendor/depot_tools/metrics_utils.py +303 -0
  76. data/vendor/depot_tools/my_activity.py +91 -29
  77. data/vendor/depot_tools/ninja +1 -1
  78. data/vendor/depot_tools/ninjalog.README.md +64 -0
  79. data/vendor/depot_tools/ninjalog_uploader.py +232 -0
  80. data/vendor/depot_tools/ninjalog_uploader_wrapper.py +116 -0
  81. data/vendor/depot_tools/owners.py +30 -13
  82. data/vendor/depot_tools/owners_finder.py +5 -2
  83. data/vendor/depot_tools/presubmit_canned_checks.py +188 -29
  84. data/vendor/depot_tools/presubmit_support.py +18 -41
  85. data/vendor/depot_tools/pylintrc +23 -19
  86. data/vendor/depot_tools/recipes/OWNERS +2 -0
  87. data/vendor/depot_tools/recipes/README.recipes.md +344 -151
  88. data/vendor/depot_tools/recipes/recipe_modules/bot_update/OWNERS +2 -0
  89. data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +2 -16
  90. data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +141 -99
  91. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +5 -8
  92. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +5 -8
  93. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +6 -98
  94. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +4 -9
  95. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +45 -5
  96. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +4 -9
  97. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +4 -9
  98. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{tryjob.json → input_commit_with_id_without_repo.json} +6 -11
  99. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{tryjob_empty_revision.json → multiple_patch_refs.json} +8 -9
  100. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +19 -29
  101. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{trychange.json → refs.json} +4 -9
  102. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +4 -9
  103. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +51 -6
  104. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +50 -6
  105. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +51 -6
  106. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +17 -25
  107. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +17 -25
  108. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +18 -26
  109. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +18 -26
  110. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +26 -28
  111. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +45 -5
  112. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +17 -25
  113. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +13 -0
  114. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_manifest_name.json +13 -152
  115. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +4 -9
  116. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +185 -202
  117. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +52 -157
  118. data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +5 -14
  119. data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +34 -0
  120. data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +14 -2
  121. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +4 -5
  122. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +4 -5
  123. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +7 -5
  124. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +4 -5
  125. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +4 -5
  126. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +9 -3
  127. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +9 -3
  128. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +9 -3
  129. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +4 -5
  130. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +2 -3
  131. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +2 -3
  132. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +2 -3
  133. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +2 -3
  134. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +2 -3
  135. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +2 -3
  136. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +2 -3
  137. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +2 -3
  138. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +2 -3
  139. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +2 -3
  140. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +13 -8
  141. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +18 -12
  142. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +18 -12
  143. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +18 -12
  144. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.py +3 -0
  145. data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +1 -0
  146. data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +58 -46
  147. data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +65 -22
  148. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +20 -21
  149. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +20 -21
  150. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +20 -21
  151. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +20 -21
  152. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +5 -2
  153. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +62 -14
  154. data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +24 -38
  155. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +56 -50
  156. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.py +15 -9
  157. data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +4 -1
  158. data/vendor/depot_tools/recipes/recipe_modules/git/api.py +34 -22
  159. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +5 -6
  160. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +5 -6
  161. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +5 -6
  162. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +5 -6
  163. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_luci.json +222 -0
  164. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +5 -6
  165. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +5 -6
  166. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +224 -0
  167. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +10 -6
  168. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +5 -7
  169. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +5 -6
  170. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +5 -6
  171. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +5 -7
  172. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +5 -6
  173. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +10 -5
  174. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +5 -6
  175. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +8 -9
  176. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +5 -6
  177. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +12 -8
  178. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +5 -6
  179. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +5 -6
  180. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +27 -11
  181. data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +1 -1
  182. data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +12 -13
  183. data/vendor/depot_tools/recipes/recipe_modules/gitiles/__init__.py +5 -0
  184. data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +120 -5
  185. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +45 -3
  186. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.py +25 -0
  187. data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +56 -4
  188. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +6 -0
  189. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.py +49 -0
  190. data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +24 -13
  191. data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +13 -14
  192. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/basic.json +2 -3
  193. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_linux.json +2 -3
  194. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_mac.json +2 -3
  195. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_win.json +2 -3
  196. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_linux.json +2 -3
  197. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_mac.json +2 -3
  198. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_win.json +2 -3
  199. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_linux.json +2 -3
  200. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_mac.json +2 -3
  201. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_win.json +2 -3
  202. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/path_config.py +1 -2
  203. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +35 -0
  204. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +116 -0
  205. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +22 -0
  206. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +82 -0
  207. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +22 -0
  208. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +23 -0
  209. data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +1 -0
  210. data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +2 -7
  211. data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +7 -6
  212. data/vendor/depot_tools/recipes/recipe_modules/tryserver/__init__.py +1 -0
  213. data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +117 -8
  214. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +4 -5
  215. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/set_failure_hash_with_no_steps.json +7 -4
  216. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +98 -7
  217. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +147 -0
  218. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +8 -5
  219. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +8 -5
  220. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +9 -6
  221. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +9 -6
  222. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +27 -2
  223. data/vendor/depot_tools/recipes/recipe_modules/tryserver/test_api.py +14 -0
  224. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/__init__.py +25 -0
  225. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/api.py +137 -0
  226. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +22 -0
  227. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +22 -0
  228. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +107 -0
  229. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +26 -0
  230. data/vendor/depot_tools/recipes/recipes.py +37 -27
  231. data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +7 -10
  232. data/vendor/depot_tools/repo +34 -8
  233. data/vendor/depot_tools/roll_dep.py +52 -49
  234. data/vendor/depot_tools/scm.py +38 -23
  235. data/vendor/depot_tools/setup_color.py +4 -2
  236. data/vendor/depot_tools/split_cl.py +32 -4
  237. data/vendor/depot_tools/subprocess2.py +22 -4
  238. data/vendor/depot_tools/third_party/httplib2/README.chromium +2 -2
  239. data/vendor/depot_tools/third_party/httplib2/__init__.py +242 -158
  240. data/vendor/depot_tools/third_party/httplib2/cacerts.txt +57 -44
  241. data/vendor/depot_tools/third_party/httplib2/socks.py +15 -5
  242. data/vendor/depot_tools/third_party/logilab/README.chromium +2 -4
  243. data/vendor/depot_tools/third_party/logilab/astroid/README.chromium +2 -1
  244. data/vendor/depot_tools/third_party/logilab/astroid/__init__.py +10 -5
  245. data/vendor/depot_tools/third_party/logilab/astroid/__pkginfo__.py +5 -5
  246. data/vendor/depot_tools/third_party/logilab/astroid/arguments.py +233 -0
  247. data/vendor/depot_tools/third_party/logilab/astroid/as_string.py +82 -33
  248. data/vendor/depot_tools/third_party/logilab/astroid/bases.py +137 -153
  249. data/vendor/depot_tools/third_party/logilab/astroid/brain/{builtin_inference.py → brain_builtin_inference.py} +117 -26
  250. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_dateutil.py +15 -0
  251. data/vendor/depot_tools/third_party/logilab/astroid/brain/{py2gi.py → brain_gi.py} +48 -8
  252. data/vendor/depot_tools/third_party/logilab/astroid/brain/{py2mechanize.py → brain_mechanize.py} +0 -0
  253. data/vendor/depot_tools/third_party/logilab/astroid/brain/{pynose.py → brain_nose.py} +4 -1
  254. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_numpy.py +62 -0
  255. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_pytest.py +76 -0
  256. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_qt.py +44 -0
  257. data/vendor/depot_tools/third_party/logilab/astroid/brain/{pysix_moves.py → brain_six.py} +28 -1
  258. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_ssl.py +65 -0
  259. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_stdlib.py +473 -0
  260. data/vendor/depot_tools/third_party/logilab/astroid/builder.py +104 -81
  261. data/vendor/depot_tools/third_party/logilab/astroid/context.py +81 -0
  262. data/vendor/depot_tools/third_party/logilab/astroid/decorators.py +75 -0
  263. data/vendor/depot_tools/third_party/logilab/astroid/exceptions.py +20 -0
  264. data/vendor/depot_tools/third_party/logilab/astroid/inference.py +137 -183
  265. data/vendor/depot_tools/third_party/logilab/astroid/manager.py +45 -169
  266. data/vendor/depot_tools/third_party/logilab/astroid/mixins.py +37 -14
  267. data/vendor/depot_tools/third_party/logilab/astroid/modutils.py +112 -41
  268. data/vendor/depot_tools/third_party/logilab/astroid/node_classes.py +243 -156
  269. data/vendor/depot_tools/third_party/logilab/astroid/nodes.py +35 -22
  270. data/vendor/depot_tools/third_party/logilab/astroid/objects.py +186 -0
  271. data/vendor/depot_tools/third_party/logilab/astroid/protocols.py +157 -102
  272. data/vendor/depot_tools/third_party/logilab/astroid/raw_building.py +32 -8
  273. data/vendor/depot_tools/third_party/logilab/astroid/rebuilder.py +372 -309
  274. data/vendor/depot_tools/third_party/logilab/astroid/scoped_nodes.py +652 -420
  275. data/vendor/depot_tools/third_party/logilab/astroid/test_utils.py +4 -21
  276. data/vendor/depot_tools/third_party/logilab/astroid/transforms.py +96 -0
  277. data/vendor/depot_tools/third_party/logilab/astroid/util.py +89 -0
  278. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/LICENSE +19 -0
  279. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/README.chromium +11 -0
  280. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/__init__.py +20 -0
  281. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/cext.c +1421 -0
  282. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/compat.py +9 -0
  283. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/simple.py +246 -0
  284. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/slots.py +414 -0
  285. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/utils.py +13 -0
  286. data/vendor/depot_tools/third_party/logilab/wrapt/LICENSE +24 -0
  287. data/vendor/depot_tools/third_party/logilab/wrapt/README.chromium +11 -0
  288. data/vendor/depot_tools/third_party/logilab/wrapt/__init__.py +19 -0
  289. data/vendor/depot_tools/third_party/logilab/wrapt/_wrappers.c +2729 -0
  290. data/vendor/depot_tools/third_party/logilab/wrapt/arguments.py +96 -0
  291. data/vendor/depot_tools/third_party/logilab/wrapt/decorators.py +512 -0
  292. data/vendor/depot_tools/third_party/logilab/wrapt/importer.py +228 -0
  293. data/vendor/depot_tools/third_party/logilab/wrapt/wrappers.py +901 -0
  294. data/vendor/depot_tools/third_party/pylint/README.chromium +2 -25
  295. data/vendor/depot_tools/third_party/pylint/__pkginfo__.py +13 -3
  296. data/vendor/depot_tools/third_party/pylint/checkers/__init__.py +1 -2
  297. data/vendor/depot_tools/third_party/pylint/checkers/async.py +82 -0
  298. data/vendor/depot_tools/third_party/pylint/checkers/base.py +893 -119
  299. data/vendor/depot_tools/third_party/pylint/checkers/classes.py +342 -204
  300. data/vendor/depot_tools/third_party/pylint/checkers/design_analysis.py +51 -34
  301. data/vendor/depot_tools/third_party/pylint/checkers/exceptions.py +84 -47
  302. data/vendor/depot_tools/third_party/pylint/checkers/format.py +55 -30
  303. data/vendor/depot_tools/third_party/pylint/checkers/imports.py +314 -73
  304. data/vendor/depot_tools/third_party/pylint/checkers/logging.py +10 -8
  305. data/vendor/depot_tools/third_party/pylint/checkers/misc.py +2 -1
  306. data/vendor/depot_tools/third_party/pylint/checkers/newstyle.py +45 -48
  307. data/vendor/depot_tools/third_party/pylint/checkers/python3.py +31 -21
  308. data/vendor/depot_tools/third_party/pylint/checkers/raw_metrics.py +3 -3
  309. data/vendor/depot_tools/third_party/pylint/checkers/similar.py +4 -5
  310. data/vendor/depot_tools/third_party/pylint/checkers/spelling.py +24 -10
  311. data/vendor/depot_tools/third_party/pylint/checkers/stdlib.py +120 -56
  312. data/vendor/depot_tools/third_party/pylint/checkers/strings.py +38 -35
  313. data/vendor/depot_tools/third_party/pylint/checkers/typecheck.py +485 -138
  314. data/vendor/depot_tools/third_party/pylint/checkers/utils.py +319 -142
  315. data/vendor/depot_tools/third_party/pylint/checkers/variables.py +329 -207
  316. data/vendor/depot_tools/third_party/pylint/config.py +739 -76
  317. data/vendor/depot_tools/third_party/pylint/epylint.py +9 -5
  318. data/vendor/depot_tools/third_party/pylint/extensions/__init__.py +0 -0
  319. data/vendor/depot_tools/third_party/pylint/extensions/check_docs.py +311 -0
  320. data/vendor/depot_tools/third_party/pylint/extensions/check_elif.py +62 -0
  321. data/vendor/depot_tools/third_party/{logilab/common → pylint}/graph.py +30 -133
  322. data/vendor/depot_tools/third_party/pylint/gui.py +2 -2
  323. data/vendor/depot_tools/third_party/pylint/interfaces.py +21 -3
  324. data/vendor/depot_tools/third_party/pylint/lint.py +123 -140
  325. data/vendor/depot_tools/third_party/pylint/pyreverse/diadefslib.py +10 -13
  326. data/vendor/depot_tools/third_party/pylint/pyreverse/diagrams.py +15 -4
  327. data/vendor/depot_tools/third_party/pylint/pyreverse/inspector.py +372 -0
  328. data/vendor/depot_tools/third_party/pylint/pyreverse/main.py +30 -7
  329. data/vendor/depot_tools/third_party/pylint/pyreverse/utils.py +80 -2
  330. data/vendor/depot_tools/third_party/{logilab/common → pylint/pyreverse}/vcgutils.py +19 -37
  331. data/vendor/depot_tools/third_party/pylint/pyreverse/writer.py +3 -4
  332. data/vendor/depot_tools/third_party/pylint/reporters/__init__.py +34 -18
  333. data/vendor/depot_tools/third_party/pylint/reporters/guireporter.py +1 -1
  334. data/vendor/depot_tools/third_party/pylint/reporters/html.py +10 -3
  335. data/vendor/depot_tools/third_party/pylint/reporters/json.py +10 -4
  336. data/vendor/depot_tools/third_party/pylint/reporters/text.py +94 -3
  337. data/vendor/depot_tools/third_party/pylint/reporters/ureports/__init__.py +106 -0
  338. data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/html_writer.py +17 -57
  339. data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/nodes.py +52 -74
  340. data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/text_writer.py +14 -60
  341. data/vendor/depot_tools/third_party/pylint/testutils.py +22 -20
  342. data/vendor/depot_tools/third_party/pylint/utils.py +268 -44
  343. data/vendor/depot_tools/third_party/repo/progress.py +42 -0
  344. data/vendor/depot_tools/update_depot_tools +1 -1
  345. data/vendor/depot_tools/upload_metrics.py +25 -0
  346. data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +45 -15
  347. data/vendor/depot_tools/win_toolchain/package_from_installed.py +71 -24
  348. data/vendor/depot_tools/yapf +1 -1
  349. data/vendor/depot_tools/yapf.bat +1 -1
  350. metadata +92 -77
  351. data/vendor/depot_tools/git-crsync +0 -3
  352. data/vendor/depot_tools/infra/config/cq.cfg +0 -32
  353. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref.json +0 -29
  354. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref_custom.json +0 -29
  355. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/buildbot.json +0 -105
  356. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/shallow.json +0 -195
  357. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle_deprecated.json +0 -248
  358. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8.json +0 -248
  359. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_manifest_name_no_patch.json +0 -105
  360. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/apply_gerrit.py +0 -33
  361. data/vendor/depot_tools/third_party/logilab/astroid/brain/py2pytest.py +0 -31
  362. data/vendor/depot_tools/third_party/logilab/astroid/brain/py2qt4.py +0 -22
  363. data/vendor/depot_tools/third_party/logilab/astroid/brain/py2stdlib.py +0 -334
  364. data/vendor/depot_tools/third_party/logilab/astroid/inspector.py +0 -273
  365. data/vendor/depot_tools/third_party/logilab/astroid/utils.py +0 -239
  366. data/vendor/depot_tools/third_party/logilab/common/LICENSE.txt +0 -339
  367. data/vendor/depot_tools/third_party/logilab/common/README.chromium +0 -11
  368. data/vendor/depot_tools/third_party/logilab/common/__init__.py +0 -175
  369. data/vendor/depot_tools/third_party/logilab/common/__pkginfo__.py +0 -57
  370. data/vendor/depot_tools/third_party/logilab/common/cache.py +0 -114
  371. data/vendor/depot_tools/third_party/logilab/common/changelog.py +0 -238
  372. data/vendor/depot_tools/third_party/logilab/common/clcommands.py +0 -334
  373. data/vendor/depot_tools/third_party/logilab/common/cli.py +0 -211
  374. data/vendor/depot_tools/third_party/logilab/common/compat.py +0 -78
  375. data/vendor/depot_tools/third_party/logilab/common/configuration.py +0 -1105
  376. data/vendor/depot_tools/third_party/logilab/common/contexts.py +0 -5
  377. data/vendor/depot_tools/third_party/logilab/common/corbautils.py +0 -117
  378. data/vendor/depot_tools/third_party/logilab/common/daemon.py +0 -101
  379. data/vendor/depot_tools/third_party/logilab/common/date.py +0 -335
  380. data/vendor/depot_tools/third_party/logilab/common/dbf.py +0 -231
  381. data/vendor/depot_tools/third_party/logilab/common/debugger.py +0 -214
  382. data/vendor/depot_tools/third_party/logilab/common/decorators.py +0 -281
  383. data/vendor/depot_tools/third_party/logilab/common/deprecation.py +0 -189
  384. data/vendor/depot_tools/third_party/logilab/common/fileutils.py +0 -404
  385. data/vendor/depot_tools/third_party/logilab/common/interface.py +0 -71
  386. data/vendor/depot_tools/third_party/logilab/common/logging_ext.py +0 -195
  387. data/vendor/depot_tools/third_party/logilab/common/modutils.py +0 -702
  388. data/vendor/depot_tools/third_party/logilab/common/optik_ext.py +0 -392
  389. data/vendor/depot_tools/third_party/logilab/common/optparser.py +0 -92
  390. data/vendor/depot_tools/third_party/logilab/common/proc.py +0 -277
  391. data/vendor/depot_tools/third_party/logilab/common/pyro_ext.py +0 -180
  392. data/vendor/depot_tools/third_party/logilab/common/pytest.py +0 -1199
  393. data/vendor/depot_tools/third_party/logilab/common/registry.py +0 -1119
  394. data/vendor/depot_tools/third_party/logilab/common/shellutils.py +0 -462
  395. data/vendor/depot_tools/third_party/logilab/common/sphinx_ext.py +0 -87
  396. data/vendor/depot_tools/third_party/logilab/common/sphinxutils.py +0 -122
  397. data/vendor/depot_tools/third_party/logilab/common/table.py +0 -929
  398. data/vendor/depot_tools/third_party/logilab/common/tasksqueue.py +0 -101
  399. data/vendor/depot_tools/third_party/logilab/common/testlib.py +0 -1392
  400. data/vendor/depot_tools/third_party/logilab/common/textutils.py +0 -537
  401. data/vendor/depot_tools/third_party/logilab/common/tree.py +0 -369
  402. data/vendor/depot_tools/third_party/logilab/common/umessage.py +0 -194
  403. data/vendor/depot_tools/third_party/logilab/common/ureports/__init__.py +0 -172
  404. data/vendor/depot_tools/third_party/logilab/common/ureports/docbook_writer.py +0 -140
  405. data/vendor/depot_tools/third_party/logilab/common/urllib2ext.py +0 -89
  406. data/vendor/depot_tools/third_party/logilab/common/visitor.py +0 -109
  407. data/vendor/depot_tools/third_party/logilab/common/xmlrpcutils.py +0 -131
  408. data/vendor/depot_tools/third_party/logilab/common/xmlutils.py +0 -61
@@ -22,9 +22,10 @@
22
22
  * :func:`dump` function return an internal representation of nodes found
23
23
  in the tree, useful for debugging or understanding the tree structure
24
24
  """
25
-
26
25
  import sys
27
26
 
27
+ import six
28
+
28
29
  INDENT = ' ' # 4 spaces ; keep indentation variable
29
30
 
30
31
 
@@ -89,9 +90,9 @@ class AsStringVisitor(object):
89
90
  """return an astroid.Function node as string"""
90
91
  return node.format_args()
91
92
 
92
- def visit_assattr(self, node):
93
+ def visit_assignattr(self, node):
93
94
  """return an astroid.AssAttr node as string"""
94
- return self.visit_getattr(node)
95
+ return self.visit_attribute(node)
95
96
 
96
97
  def visit_assert(self, node):
97
98
  """return an astroid.Assert node as string"""
@@ -100,7 +101,7 @@ class AsStringVisitor(object):
100
101
  node.fail.accept(self))
101
102
  return 'assert %s' % node.test.accept(self)
102
103
 
103
- def visit_assname(self, node):
104
+ def visit_assignname(self, node):
104
105
  """return an astroid.AssName node as string"""
105
106
  return node.name
106
107
 
@@ -113,8 +114,8 @@ class AsStringVisitor(object):
113
114
  """return an astroid.AugAssign node as string"""
114
115
  return '%s %s %s' % (node.target.accept(self), node.op, node.value.accept(self))
115
116
 
116
- def visit_backquote(self, node):
117
- """return an astroid.Backquote node as string"""
117
+ def visit_repr(self, node):
118
+ """return an astroid.Repr node as string"""
118
119
  return '`%s`' % node.value.accept(self)
119
120
 
120
121
  def visit_binop(self, node):
@@ -130,18 +131,20 @@ class AsStringVisitor(object):
130
131
  """return an astroid.Break node as string"""
131
132
  return 'break'
132
133
 
133
- def visit_callfunc(self, node):
134
- """return an astroid.CallFunc node as string"""
134
+ def visit_call(self, node):
135
+ """return an astroid.Call node as string"""
135
136
  expr_str = node.func.accept(self)
136
137
  args = [arg.accept(self) for arg in node.args]
137
- if node.starargs:
138
- args.append('*' + node.starargs.accept(self))
139
- if node.kwargs:
140
- args.append('**' + node.kwargs.accept(self))
138
+ if node.keywords:
139
+ keywords = [kwarg.accept(self) for kwarg in node.keywords]
140
+ else:
141
+ keywords = []
142
+
143
+ args.extend(keywords)
141
144
  return '%s(%s)' % (expr_str, ', '.join(args))
142
145
 
143
- def visit_class(self, node):
144
- """return an astroid.Class node as string"""
146
+ def visit_classdef(self, node):
147
+ """return an astroid.ClassDef node as string"""
145
148
  decorate = node.decorators and node.decorators.accept(self) or ''
146
149
  bases = ', '.join([n.accept(self) for n in node.bases])
147
150
  if sys.version_info[0] == 2:
@@ -186,7 +189,7 @@ class AsStringVisitor(object):
186
189
 
187
190
  def visit_delattr(self, node):
188
191
  """return an astroid.DelAttr node as string"""
189
- return self.visit_getattr(node)
192
+ return self.visit_attribute(node)
190
193
 
191
194
  def visit_delname(self, node):
192
195
  """return an astroid.DelName node as string"""
@@ -198,16 +201,27 @@ class AsStringVisitor(object):
198
201
 
199
202
  def visit_dict(self, node):
200
203
  """return an astroid.Dict node as string"""
201
- return '{%s}' % ', '.join(['%s: %s' % (key.accept(self),
202
- value.accept(self))
203
- for key, value in node.items])
204
+ return '{%s}' % ', '.join(self._visit_dict(node))
205
+
206
+ def _visit_dict(self, node):
207
+ for key, value in node.items:
208
+ key = key.accept(self)
209
+ value = value.accept(self)
210
+ if key == '**':
211
+ # It can only be a DictUnpack node.
212
+ yield key + value
213
+ else:
214
+ yield '%s: %s' % (key, value)
215
+
216
+ def visit_dictunpack(self, node):
217
+ return '**'
204
218
 
205
219
  def visit_dictcomp(self, node):
206
220
  """return an astroid.DictComp node as string"""
207
221
  return '{%s: %s %s}' % (node.key.accept(self), node.value.accept(self),
208
222
  ' '.join([n.accept(self) for n in node.generators]))
209
223
 
210
- def visit_discard(self, node):
224
+ def visit_expr(self, node):
211
225
  """return an astroid.Discard node as string"""
212
226
  return node.value.accept(self)
213
227
 
@@ -258,24 +272,33 @@ class AsStringVisitor(object):
258
272
  fors = '%s\nelse:\n%s' % (fors, self._stmt_list(node.orelse))
259
273
  return fors
260
274
 
261
- def visit_from(self, node):
262
- """return an astroid.From node as string"""
275
+ def visit_importfrom(self, node):
276
+ """return an astroid.ImportFrom node as string"""
263
277
  return 'from %s import %s' % ('.' * (node.level or 0) + node.modname,
264
278
  _import_string(node.names))
265
279
 
266
- def visit_function(self, node):
280
+ def visit_functiondef(self, node):
267
281
  """return an astroid.Function node as string"""
268
282
  decorate = node.decorators and node.decorators.accept(self) or ''
269
283
  docs = node.doc and '\n%s"""%s"""' % (INDENT, node.doc) or ''
270
- return '\n%sdef %s(%s):%s\n%s' % (decorate, node.name, node.args.accept(self),
271
- docs, self._stmt_list(node.body))
272
-
273
- def visit_genexpr(self, node):
274
- """return an astroid.GenExpr node as string"""
284
+ return_annotation = ''
285
+ if six.PY3 and node.returns:
286
+ return_annotation = '->' + node.returns.as_string()
287
+ trailer = return_annotation + ":"
288
+ else:
289
+ trailer = ":"
290
+ def_format = "\n%sdef %s(%s)%s%s\n%s"
291
+ return def_format % (decorate, node.name,
292
+ node.args.accept(self),
293
+ trailer, docs,
294
+ self._stmt_list(node.body))
295
+
296
+ def visit_generatorexp(self, node):
297
+ """return an astroid.GeneratorExp node as string"""
275
298
  return '(%s %s)' % (node.elt.accept(self),
276
299
  ' '.join([n.accept(self) for n in node.generators]))
277
300
 
278
- def visit_getattr(self, node):
301
+ def visit_attribute(self, node):
279
302
  """return an astroid.Getattr node as string"""
280
303
  return '%s.%s' % (node.expr.accept(self), node.attrname)
281
304
 
@@ -302,6 +325,8 @@ class AsStringVisitor(object):
302
325
 
303
326
  def visit_keyword(self, node):
304
327
  """return an astroid.Keyword node as string"""
328
+ if node.arg is None:
329
+ return '**%s' % node.value.accept(self)
305
330
  return '%s=%s' % (node.arg, node.value.accept(self))
306
331
 
307
332
  def visit_lambda(self, node):
@@ -438,6 +463,22 @@ class AsStringVisitor(object):
438
463
  else:
439
464
  return "(%s)" % (expr,)
440
465
 
466
+ def visit_starred(self, node):
467
+ """return Starred node as string"""
468
+ return "*" + node.value.accept(self)
469
+
470
+
471
+ # These aren't for real AST nodes, but for inference objects.
472
+
473
+ def visit_frozenset(self, node):
474
+ return node.parent.accept(self)
475
+
476
+ def visit_super(self, node):
477
+ return node.parent.accept(self)
478
+
479
+ def visit_yes(self, node):
480
+ return "Uninferable"
481
+
441
482
 
442
483
  class AsStringVisitor3k(AsStringVisitor):
443
484
  """AsStringVisitor3k overwrites some AsStringVisitor methods"""
@@ -466,10 +507,6 @@ class AsStringVisitor3k(AsStringVisitor):
466
507
  return 'raise %s' % node.exc.accept(self)
467
508
  return 'raise'
468
509
 
469
- def visit_starred(self, node):
470
- """return Starred node as string"""
471
- return "*" + node.value.accept(self)
472
-
473
510
  def visit_yieldfrom(self, node):
474
511
  """ Return an astroid.YieldFrom node as string. """
475
512
  yi_val = node.value and (" " + node.value.accept(self)) or ""
@@ -479,6 +516,19 @@ class AsStringVisitor3k(AsStringVisitor):
479
516
  else:
480
517
  return "(%s)" % (expr,)
481
518
 
519
+ def visit_asyncfunctiondef(self, node):
520
+ function = super(AsStringVisitor3k, self).visit_functiondef(node)
521
+ return 'async ' + function.strip()
522
+
523
+ def visit_await(self, node):
524
+ return 'await %s' % node.value.accept(self)
525
+
526
+ def visit_asyncwith(self, node):
527
+ return 'async %s' % self.visit_with(node)
528
+
529
+ def visit_asyncfor(self, node):
530
+ return 'async %s' % self.visit_for(node)
531
+
482
532
 
483
533
  def _import_string(names):
484
534
  """return a list of (name, asname) formatted as a string"""
@@ -496,4 +546,3 @@ if sys.version_info >= (3, 0):
496
546
 
497
547
  # this visitor is stateless, thus it can be reused
498
548
  to_code = AsStringVisitor()
499
-
@@ -18,22 +18,44 @@
18
18
  """This module contains base classes and functions for the nodes and some
19
19
  inference utils.
20
20
  """
21
-
22
- __docformat__ = "restructuredtext en"
23
-
21
+ import functools
24
22
  import sys
25
- from contextlib import contextmanager
23
+ import warnings
26
24
 
27
- from logilab.common.decorators import cachedproperty
25
+ import wrapt
28
26
 
29
- from astroid.exceptions import (InferenceError, AstroidError, NotFoundError,
30
- UnresolvableName, UseInferenceDefault)
27
+ from astroid import context as contextmod
28
+ from astroid import decorators as decoratorsmod
29
+ from astroid import exceptions
30
+ from astroid import util
31
31
 
32
32
 
33
33
  if sys.version_info >= (3, 0):
34
34
  BUILTINS = 'builtins'
35
35
  else:
36
36
  BUILTINS = '__builtin__'
37
+ PROPERTIES = {BUILTINS + '.property', 'abc.abstractproperty'}
38
+ # List of possible property names. We use this list in order
39
+ # to see if a method is a property or not. This should be
40
+ # pretty reliable and fast, the alternative being to check each
41
+ # decorator to see if its a real property-like descriptor, which
42
+ # can be too complicated.
43
+ # Also, these aren't qualified, because each project can
44
+ # define them, we shouldn't expect to know every possible
45
+ # property-like decorator!
46
+ # TODO(cpopa): just implement descriptors already.
47
+ POSSIBLE_PROPERTIES = {"cached_property", "cachedproperty",
48
+ "lazyproperty", "lazy_property", "reify",
49
+ "lazyattribute", "lazy_attribute",
50
+ "LazyProperty", "lazy"}
51
+
52
+
53
+ def _is_property(meth):
54
+ if PROPERTIES.intersection(meth.decoratornames()):
55
+ return True
56
+ stripped = {name.split(".")[-1] for name in meth.decoratornames()
57
+ if name is not util.YES}
58
+ return any(name in stripped for name in POSSIBLE_PROPERTIES)
37
59
 
38
60
 
39
61
  class Proxy(object):
@@ -56,101 +78,34 @@ class Proxy(object):
56
78
  yield self
57
79
 
58
80
 
59
- # Inference ##################################################################
60
-
61
- class InferenceContext(object):
62
- __slots__ = ('path', 'lookupname', 'callcontext', 'boundnode', 'infered')
63
-
64
- def __init__(self, path=None, infered=None):
65
- self.path = path or set()
66
- self.lookupname = None
67
- self.callcontext = None
68
- self.boundnode = None
69
- self.infered = infered or {}
70
-
71
- def push(self, node):
72
- name = self.lookupname
73
- if (node, name) in self.path:
74
- raise StopIteration()
75
- self.path.add((node, name))
76
-
77
- def clone(self):
78
- # XXX copy lookupname/callcontext ?
79
- clone = InferenceContext(self.path, infered=self.infered)
80
- clone.callcontext = self.callcontext
81
- clone.boundnode = self.boundnode
82
- return clone
83
-
84
- def cache_generator(self, key, generator):
85
- results = []
86
- for result in generator:
87
- results.append(result)
88
- yield result
89
-
90
- self.infered[key] = tuple(results)
91
- return
92
-
93
- @contextmanager
94
- def restore_path(self):
95
- path = set(self.path)
96
- yield
97
- self.path = path
98
-
99
- def copy_context(context):
100
- if context is not None:
101
- return context.clone()
102
- else:
103
- return InferenceContext()
104
-
105
-
106
81
  def _infer_stmts(stmts, context, frame=None):
107
- """return an iterator on statements inferred by each statement in <stmts>
108
- """
82
+ """Return an iterator on statements inferred by each statement in *stmts*."""
109
83
  stmt = None
110
- infered = False
84
+ inferred = False
111
85
  if context is not None:
112
86
  name = context.lookupname
113
87
  context = context.clone()
114
88
  else:
115
89
  name = None
116
- context = InferenceContext()
90
+ context = contextmod.InferenceContext()
91
+
117
92
  for stmt in stmts:
118
- if stmt is YES:
93
+ if stmt is util.YES:
119
94
  yield stmt
120
- infered = True
95
+ inferred = True
121
96
  continue
122
97
  context.lookupname = stmt._infer_name(frame, name)
123
98
  try:
124
- for infered in stmt.infer(context):
125
- yield infered
126
- infered = True
127
- except UnresolvableName:
99
+ for inferred in stmt.infer(context=context):
100
+ yield inferred
101
+ inferred = True
102
+ except exceptions.UnresolvableName:
128
103
  continue
129
- except InferenceError:
130
- yield YES
131
- infered = True
132
- if not infered:
133
- raise InferenceError(str(stmt))
134
-
135
-
136
- # special inference objects (e.g. may be returned as nodes by .infer()) #######
137
-
138
- class _Yes(object):
139
- """a yes object"""
140
- def __repr__(self):
141
- return 'YES'
142
- def __getattribute__(self, name):
143
- if name == 'next':
144
- raise AttributeError('next method should not be called')
145
- if name.startswith('__') and name.endswith('__'):
146
- # to avoid inspection pb
147
- return super(_Yes, self).__getattribute__(name)
148
- return self
149
- def __call__(self, *args, **kwargs):
150
- return self
151
-
152
-
153
- YES = _Yes()
104
+ except exceptions.InferenceError:
105
+ yield util.YES
106
+ inferred = True
107
+ if not inferred:
108
+ raise exceptions.InferenceError(str(stmt))
154
109
 
155
110
 
156
111
  class Instance(Proxy):
@@ -158,7 +113,7 @@ class Instance(Proxy):
158
113
  def getattr(self, name, context=None, lookupclass=True):
159
114
  try:
160
115
  values = self._proxied.instance_attr(name, context)
161
- except NotFoundError:
116
+ except exceptions.NotFoundError:
162
117
  if name == '__class__':
163
118
  return [self._proxied]
164
119
  if lookupclass:
@@ -167,23 +122,22 @@ class Instance(Proxy):
167
122
  if name in ('__name__', '__bases__', '__mro__', '__subclasses__'):
168
123
  return self._proxied.local_attr(name)
169
124
  return self._proxied.getattr(name, context)
170
- raise NotFoundError(name)
125
+ raise exceptions.NotFoundError(name)
171
126
  # since we've no context information, return matching class members as
172
127
  # well
173
128
  if lookupclass:
174
129
  try:
175
130
  return values + self._proxied.getattr(name, context)
176
- except NotFoundError:
131
+ except exceptions.NotFoundError:
177
132
  pass
178
133
  return values
179
134
 
180
135
  def igetattr(self, name, context=None):
181
136
  """inferred getattr"""
182
137
  if not context:
183
- context = InferenceContext()
138
+ context = contextmod.InferenceContext()
184
139
  try:
185
140
  # avoid recursively inferring the same attr on the same class
186
-
187
141
  context.push((self._proxied, name))
188
142
  # XXX frame should be self._proxied, or not ?
189
143
  get_attr = self.getattr(name, context, lookupclass=False)
@@ -192,38 +146,49 @@ class Instance(Proxy):
192
146
  context,
193
147
  frame=self,
194
148
  )
195
- except NotFoundError:
149
+ except exceptions.NotFoundError:
196
150
  try:
197
151
  # fallback to class'igetattr since it has some logic to handle
198
152
  # descriptors
199
153
  return self._wrap_attr(self._proxied.igetattr(name, context),
200
154
  context)
201
- except NotFoundError:
202
- raise InferenceError(name)
155
+ except exceptions.NotFoundError:
156
+ raise exceptions.InferenceError(name)
203
157
 
204
158
  def _wrap_attr(self, attrs, context=None):
205
159
  """wrap bound methods of attrs in a InstanceMethod proxies"""
206
160
  for attr in attrs:
207
161
  if isinstance(attr, UnboundMethod):
208
- if BUILTINS + '.property' in attr.decoratornames():
209
- for infered in attr.infer_call_result(self, context):
210
- yield infered
162
+ if _is_property(attr):
163
+ for inferred in attr.infer_call_result(self, context):
164
+ yield inferred
211
165
  else:
212
166
  yield BoundMethod(attr, self)
167
+ elif hasattr(attr, 'name') and attr.name == '<lambda>':
168
+ # This is a lambda function defined at class level,
169
+ # since its scope is the underlying _proxied class.
170
+ # Unfortunately, we can't do an isinstance check here,
171
+ # because of the circular dependency between astroid.bases
172
+ # and astroid.scoped_nodes.
173
+ if attr.statement().scope() == self._proxied:
174
+ if attr.args.args and attr.args.args[0].name == 'self':
175
+ yield BoundMethod(attr, self)
176
+ continue
177
+ yield attr
213
178
  else:
214
179
  yield attr
215
180
 
216
181
  def infer_call_result(self, caller, context=None):
217
182
  """infer what a class instance is returning when called"""
218
- infered = False
183
+ inferred = False
219
184
  for node in self._proxied.igetattr('__call__', context):
220
- if node is YES:
185
+ if node is util.YES or not node.callable():
221
186
  continue
222
187
  for res in node.infer_call_result(caller, context):
223
- infered = True
188
+ inferred = True
224
189
  yield res
225
- if not infered:
226
- raise InferenceError()
190
+ if not inferred:
191
+ raise exceptions.InferenceError()
227
192
 
228
193
  def __repr__(self):
229
194
  return '<Instance of %s.%s at 0x%s>' % (self._proxied.root().name,
@@ -237,7 +202,7 @@ class Instance(Proxy):
237
202
  try:
238
203
  self._proxied.getattr('__call__')
239
204
  return True
240
- except NotFoundError:
205
+ except exceptions.NotFoundError:
241
206
  return False
242
207
 
243
208
  def pytype(self):
@@ -247,6 +212,12 @@ class Instance(Proxy):
247
212
  return 'Instance of'
248
213
 
249
214
 
215
+ # TODO(cpopa): this is set in inference.py
216
+ # The circular dependency hell goes deeper and deeper.
217
+ # pylint: disable=unused-argument
218
+ def getitem(self, index, context=None):
219
+ pass
220
+
250
221
  class UnboundMethod(Proxy):
251
222
  """a special node representing a method not bound to an instance"""
252
223
  def __repr__(self):
@@ -261,12 +232,12 @@ class UnboundMethod(Proxy):
261
232
  def getattr(self, name, context=None):
262
233
  if name == 'im_func':
263
234
  return [self._proxied]
264
- return super(UnboundMethod, self).getattr(name, context)
235
+ return self._proxied.getattr(name, context)
265
236
 
266
237
  def igetattr(self, name, context=None):
267
238
  if name == 'im_func':
268
239
  return iter((self._proxied,))
269
- return super(UnboundMethod, self).igetattr(name, context)
240
+ return self._proxied.igetattr(name, context)
270
241
 
271
242
  def infer_call_result(self, caller, context):
272
243
  # If we're unbound method __new__ of builtin object, the result is an
@@ -274,7 +245,7 @@ class UnboundMethod(Proxy):
274
245
  if (self._proxied.name == '__new__' and
275
246
  self._proxied.parent.frame().qname() == '%s.object' % BUILTINS):
276
247
  infer = caller.args[0].infer() if caller.args else []
277
- return ((x is YES and x or Instance(x)) for x in infer)
248
+ return ((x is util.YES and x or Instance(x)) for x in infer)
278
249
  return self._proxied.infer_call_result(caller, context)
279
250
 
280
251
 
@@ -287,10 +258,13 @@ class BoundMethod(UnboundMethod):
287
258
  def is_bound(self):
288
259
  return True
289
260
 
290
- def infer_call_result(self, caller, context):
261
+ def infer_call_result(self, caller, context=None):
262
+
263
+ if context is None:
264
+ context = contextmod.InferenceContext()
291
265
  context = context.clone()
292
266
  context.boundnode = self.bound
293
- return self._proxied.infer_call_result(caller, context)
267
+ return super(BoundMethod, self).infer_call_result(caller, context)
294
268
 
295
269
 
296
270
  class Generator(Instance):
@@ -318,10 +292,11 @@ class Generator(Instance):
318
292
 
319
293
  def path_wrapper(func):
320
294
  """return the given infer function wrapped to handle the path"""
295
+ @functools.wraps(func)
321
296
  def wrapped(node, context=None, _func=func, **kwargs):
322
297
  """wrapper function handling context"""
323
298
  if context is None:
324
- context = InferenceContext()
299
+ context = contextmod.InferenceContext()
325
300
  context.push(node)
326
301
  yielded = set()
327
302
  for res in _func(node, context, **kwargs):
@@ -330,30 +305,28 @@ def path_wrapper(func):
330
305
  ares = res._proxied
331
306
  else:
332
307
  ares = res
333
- if not ares in yielded:
308
+ if ares not in yielded:
334
309
  yield res
335
310
  yielded.add(ares)
336
311
  return wrapped
337
312
 
338
- def yes_if_nothing_infered(func):
339
- def wrapper(*args, **kwargs):
340
- infered = False
341
- for node in func(*args, **kwargs):
342
- infered = True
343
- yield node
344
- if not infered:
345
- yield YES
346
- return wrapper
347
-
348
- def raise_if_nothing_infered(func):
349
- def wrapper(*args, **kwargs):
350
- infered = False
351
- for node in func(*args, **kwargs):
352
- infered = True
353
- yield node
354
- if not infered:
355
- raise InferenceError()
356
- return wrapper
313
+ @wrapt.decorator
314
+ def yes_if_nothing_inferred(func, instance, args, kwargs):
315
+ inferred = False
316
+ for node in func(*args, **kwargs):
317
+ inferred = True
318
+ yield node
319
+ if not inferred:
320
+ yield util.YES
321
+
322
+ @wrapt.decorator
323
+ def raise_if_nothing_inferred(func, instance, args, kwargs):
324
+ inferred = False
325
+ for node in func(*args, **kwargs):
326
+ inferred = True
327
+ yield node
328
+ if not inferred:
329
+ raise exceptions.InferenceError()
357
330
 
358
331
 
359
332
  # Node ######################################################################
@@ -364,8 +337,8 @@ class NodeNG(object):
364
337
  It represents a node of the new abstract syntax tree.
365
338
  """
366
339
  is_statement = False
367
- optional_assign = False # True for For (and for Comprehension if py <3.0)
368
- is_function = False # True for Function nodes
340
+ optional_assign = False # True for For (and for Comprehension if py <3.0)
341
+ is_function = False # True for FunctionDef nodes
369
342
  # attributes below are set by the builder module or by raw factories
370
343
  lineno = None
371
344
  fromlineno = None
@@ -389,7 +362,7 @@ class NodeNG(object):
389
362
  # explicit_inference is not bound, give it self explicitly
390
363
  try:
391
364
  return self._explicit_inference(self, context, **kwargs)
392
- except UseInferenceDefault:
365
+ except exceptions.UseInferenceDefault:
393
366
  pass
394
367
 
395
368
  if not context:
@@ -397,8 +370,8 @@ class NodeNG(object):
397
370
 
398
371
  key = (self, context.lookupname,
399
372
  context.callcontext, context.boundnode)
400
- if key in context.infered:
401
- return iter(context.infered[key])
373
+ if key in context.inferred:
374
+ return iter(context.inferred[key])
402
375
 
403
376
  return context.cache_generator(key, self._infer(context, **kwargs))
404
377
 
@@ -438,7 +411,7 @@ class NodeNG(object):
438
411
  attr = getattr(self, field)
439
412
  if not attr: # None or empty listy / tuple
440
413
  continue
441
- if attr.__class__ in (list, tuple):
414
+ if isinstance(attr, (list, tuple)):
442
415
  return attr[-1]
443
416
  else:
444
417
  return attr
@@ -460,13 +433,16 @@ class NodeNG(object):
460
433
  return self.parent.statement()
461
434
 
462
435
  def frame(self):
463
- """return the first parent frame node (i.e. Module, Function or Class)
436
+ """return the first parent frame node (i.e. Module, FunctionDef or
437
+ ClassDef)
438
+
464
439
  """
465
440
  return self.parent.frame()
466
441
 
467
442
  def scope(self):
468
- """return the first node defining a new scope (i.e. Module, Function,
469
- Class, Lambda but also GenExpr)
443
+ """return the first node defining a new scope (i.e. Module,
444
+ FunctionDef, ClassDef, Lambda but also GenExpr)
445
+
470
446
  """
471
447
  return self.parent.scope()
472
448
 
@@ -483,11 +459,12 @@ class NodeNG(object):
483
459
  if node_or_sequence is child:
484
460
  return [node_or_sequence]
485
461
  # /!\ compiler.ast Nodes have an __iter__ walking over child nodes
486
- if isinstance(node_or_sequence, (tuple, list)) and child in node_or_sequence:
462
+ if (isinstance(node_or_sequence, (tuple, list))
463
+ and child in node_or_sequence):
487
464
  return node_or_sequence
488
- else:
489
- msg = 'Could not find %s in %s\'s children'
490
- raise AstroidError(msg % (repr(child), repr(self)))
465
+
466
+ msg = 'Could not find %s in %s\'s children'
467
+ raise exceptions.AstroidError(msg % (repr(child), repr(self)))
491
468
 
492
469
  def locate_child(self, child):
493
470
  """return a 2-uple (child attribute name, sequence or node)"""
@@ -499,7 +476,7 @@ class NodeNG(object):
499
476
  if isinstance(node_or_sequence, (tuple, list)) and child in node_or_sequence:
500
477
  return field, node_or_sequence
501
478
  msg = 'Could not find %s in %s\'s children'
502
- raise AstroidError(msg % (repr(child), repr(self)))
479
+ raise exceptions.AstroidError(msg % (repr(child), repr(self)))
503
480
  # FIXME : should we merge child_sequence and locate_child ? locate_child
504
481
  # is only used in are_exclusive, child_sequence one time in pylint.
505
482
 
@@ -532,14 +509,14 @@ class NodeNG(object):
532
509
  # these are lazy because they're relatively expensive to compute for every
533
510
  # single node, and they rarely get looked at
534
511
 
535
- @cachedproperty
512
+ @decoratorsmod.cachedproperty
536
513
  def fromlineno(self):
537
514
  if self.lineno is None:
538
515
  return self._fixed_source_line()
539
516
  else:
540
517
  return self.lineno
541
518
 
542
- @cachedproperty
519
+ @decoratorsmod.cachedproperty
543
520
  def tolineno(self):
544
521
  if not self._astroid_fields:
545
522
  # can't have children
@@ -597,20 +574,27 @@ class NodeNG(object):
597
574
  yield matching
598
575
 
599
576
  def _infer_name(self, frame, name):
600
- # overridden for From, Import, Global, TryExcept and Arguments
577
+ # overridden for ImportFrom, Import, Global, TryExcept and Arguments
601
578
  return None
602
579
 
603
580
  def _infer(self, context=None):
604
581
  """we don't know how to resolve a statement by default"""
605
582
  # this method is overridden by most concrete classes
606
- raise InferenceError(self.__class__.__name__)
583
+ raise exceptions.InferenceError(self.__class__.__name__)
607
584
 
608
- def infered(self):
609
- '''return list of infered values for a more simple inference usage'''
585
+ def inferred(self):
586
+ '''return list of inferred values for a more simple inference usage'''
610
587
  return list(self.infer())
611
588
 
589
+ def infered(self):
590
+ warnings.warn('%s.infered() is deprecated and slated for removal '
591
+ 'in astroid 2.0, use %s.inferred() instead.'
592
+ % (type(self).__name__, type(self).__name__),
593
+ PendingDeprecationWarning, stacklevel=2)
594
+ return self.inferred()
595
+
612
596
  def instanciate_class(self):
613
- """instanciate a node if it is a Class node, else return self"""
597
+ """instanciate a node if it is a ClassDef node, else return self"""
614
598
  return self
615
599
 
616
600
  def has_base(self, node):